2012-06-29 56 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請求中獲取主組中的所有成員和子組中的所有成員。

這是可能的只有基地Rails協會還是我需要做一些自定義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