我有一个用户系统,其中一个用户可以与一个组相关联。这工作正常。
现在我需要能够将用户与组相关联,并且该组可以与另一个组相关联。我希望能够在一次操作中获取同时属于父组和所有子组的用户。
就这样:
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
并在最好是一个数据库请求中获取主组中的所有成员和子组中的所有成员。
这是否可能仅使用基本 Rails 关联,或者我是否需要执行一些自定义 SQL?