사용자가 임의의 수의 그룹을 만드는 앱을 만들고 있습니다. 그룹이 생성되면 그룹 테이블의 owner_id는 current_user.id
의 owner_id로 설정됩니다.user_id 대신 owner_id를 외래 키로 사용하는 방법은 무엇입니까?
특정 사용자가 소유 한 그룹을 표시하는 데 문제가 있습니다. GroupMembers 테이블을 통해 사용자와 그룹간에 다 대다 관계가 있음에 유의하십시오. 모델에 ("소유자")에 단지 마지막 줄을 추가
class Group < ActiveRecord::Base
has_many :group_members, :dependent => :destroy
has_many :users, :through => :group_members
belongs_to :owner, class_name: User, foreign_key: :owner_id
end
이 question을 바탕으로
, 나는 그런처럼 내 group.rb 모델을 수정했습니다. 문제는 내가보기에 사용자에게 속한 그룹을 표시 할 때입니다.<h3>User</h3>
<p>User: <%= @user.name %></p>
<p>Email: <%= @user.email if @user.email %></p>
<p>Groups:
<% @user.groups.each do |group|%>
<%= group.name %>
<% end %>
</p>
표시되는 그룹이 없습니다. 그것은 명시 적으로이 작업을 위해 UsersController 내부에서 그룹 테이블에 조인 할 필요가 보인다? 그러나 나는 확실하지 않다. 나는 토끼의 구멍을 너무 깊게 내려 가지 않으려 고 조언을 듣고 싶다.
UPDATE : 여기
내 사용자 모델 :class User < ActiveRecord::Base
has_many :group_members, :dependent => :destroy
has_many :groups, :through => :group_members
rolify
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
end
내 질문이 업데이트되었습니다. 두 번째 "has_many"라인을 추가해야합니까? 사용자 및 그룹과의 다 - 대 - 다 관계가 있습니다 (사용자가 멤버처럼 행동하기 때문입니다). 하지만 사용자들도 소유자처럼 행동하기 때문에 한 그룹에서 여러 그룹으로 한 명씩 추가하고 싶습니다. – Ramy
위의 수정 사항을 참조하십시오. – gregates
굉장합니다. 이 작동합니다. 나는'@ users.groups'을'@ users.owned_groups'로 바꿀 필요가 있습니다. – Ramy