그래서 has_many 및 has_many : through 연관을 기반으로하는 객체의 모든 인스턴스를 호출하는 방법을 알아 내려고합니다. 나는 사용자, 그룹 및 회원이 있습니다. 멤버 모델은 그룹과 사용자의 페어링입니다. 그룹에는 해당 모델에 user_id도 있습니다.has_many 대 vs has_many를 지정하는 방법
사용자 모델
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :groups
has_many :groups, :through => :members
end
그룹 모델
class Group < ActiveRecord::Base
has_many :users, :through => :members
belongs_to :user
end
회원 모델
class Member < ActiveRecord::Base
belongs_to :groups
belongs_to :users
end
인덱스보기
<!--these are the groups I own (the group.user_id is my id) NEEDS EDITING-->
<% @groups.each do |group| %>
<%= link_to group.title, group_path(group) %>
<%= truncate group.desc %>
<% end %>
<!--I'm a member of these groups (connected through the member model) NEEDS EDITING'-->
<% current_user.groups.order(:created_at).each do |group| %>
<%= link_to group.title, group_path(group) %>
<%= truncate group.desc %>
<% end %>
: 코드를 참조 후, 그래서 이것은 더 이해가됩니다
인덱스보기에서 여러 유형의 연결 사용자 및 그룹을 호출하는 방법을 알아 내려고하고 있습니다.
관리자로 나열된 모든 그룹의 목록을 얻고 싶습니다. (그룹. 사용자 _id) 그런 다음 구성원 인 모든 그룹의 개별 목록을 얻고 싶습니다. (구성원 모델을 통해).
내가 find 또는 where 호출로 쿼리 할 수 있음을 알고 있습니다. 그러나, 나는 current_user.groups 또는 무엇인가와 같은 간단한 방법이 있기를 바랬다. 어쨌든 감사합니다!
확인을, 나는 이해 생각하지만 난 하나에 의해 혼란 스러워요 : N. 그게 정확히 무슨 뜻 이죠? 또한 owned_groups는 별도의 모델입니까? 또는 "class_name : 'Group'"소유 그룹을 그룹 모델로 다시 라우트합니까? 나는 그걸 본 적이 없네 . –
괜찮아.이 변화를 구현했는데 이상한 오류가 나왔어. "사용자를 모델로 한 회원을 찾지 못했지만"아직 내 사용자 모델에 "has_many : groups, : through => : members "또한이 오류는"current_user.groups.order .... "행을 강조 표시합니다. –
미안, 1 : NI는 사용자와 자신이 소유 한 그룹 간의"일대 다 "관계를 의미합니다. N : N 관계는 구성원 테이블을 통해 사용자와 그룹 사이에 있습니다. – GSP