2012-06-29 2 views
1

사용자를 그룹과 연결할 수있는 사용자 시스템이 있습니다. 이것은 잘 작동합니다.Rails에서이 연관성을 어떻게 해결할 수 있습니까?

이제 사용자를 그룹과 연결할 수 있어야하며 해당 그룹을 다른 그룹과 연결할 수 있어야합니다. 한 번의 작업으로 상위 그룹과 모든 하위 그룹에 속한 사용자를 가져올 수 있어야합니다.

는 그래서 간다 :

Group -> Group -> Member 

이 설정이 오늘 모습입니다 :

class Group < ActiveRecord::Base 

    belongs_to :customer 

    has_many :child_groups, class_name: "Group", foreign_key: 'parent_group_id' 
    belongs_to :parent_group, class_name: "Group" 

    has_many :memberships, :class_name => "Group::Membership" 
    has_many :members, :through => :memberships 
end 

그리고 Group::Membership은 다음과 같습니다

class Group::Membership < ActiveRecord::Base 

    belongs_to :member 
    belongs_to :group 
    has_many :customers, :through => :group 

end 

내가 그룹을 가져 말하게하는명령을 사용하여 여러 자식 그룹이 연결되어 있습니다. 0으로 설정하고 선호하는 DB 요청에서 자식 그룹의 모든 구성원과 기본 그룹의 모든 구성원을 모두 가져옵니다.

기본 레일스 연결 만 가능합니까? 아니면 사용자 지정 SQL을 수행해야합니까?

+0

[게시물에 서명 또는 태그 라인을 추가하지 마십시오] 제발 (http://stackoverflow.com/faq#signatures). – meagar

답변

0

단일 테이블 상속을 사용합니다. 다른 모든 그룹이 상위 그룹으로부터 상속 받도록하십시오.

class ParentGroup < ActiveRecord::Base; 
belongs_to :user 
end 

class Group < ParentGroup; end 

그런 다음 ParentGroup.all을 조회하고 모든 그룹을 볼 수 있습니다. 이 링크에서 단일 테이블 상속에 대한

검색 http://api.rubyonrails.org/classes/ActiveRecord/Base.html

+0

그룹을 하드 코딩하고 싶지 않습니다. 그들은 모두 같은 계급이다. – Lisinge

관련 문제