ユーザーをグループに関連付けることができるユーザーシステムがあります。これは正常に機能します。
今、私はユーザーをグループに関連付けることができる必要があり、そのグループは別のグループに関連付けることができます。親グループとすべての子グループの両方に属するユーザーを1回の操作で取得できるようにしたい。
だからそうなるのです:
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
コマンドに関連付けられた複数の子グループを持つグループをGroup.first.members
フェッチし、できれば1つのDBリクエストで、メイングループのすべてのメンバーと子グループのすべてのメンバーをフェッチするとします。
これは基本のRailsアソシエーションだけで可能ですか、それともカスタムSQLを実行する必要がありますか?