0
我有四个型号:如何检查是否多形导轨的has_many集合包含X元素
User (users)
Caretaker (a completely different type of user)
MessageGroup (a group)
MessageGroupMembership (a join table between MessageGroup and (Users && Caretakers))
我试图定义来检查,如果一组X的成员存在的方法(成员可以是用户或看护人) 。
def group_containing(members)
# return group if a MessageGroup exists whose members have the members
# passed in and those member only. No more. No less.
end
我的问题是,成员是多态的,所以我不能完全弄清楚如何最好地构造活动记录查询。
我的类别是:
class User < ActiveRecord::Base
has_many :message_group_memberships
has_many :message_groups, through: :message_group_memberships
end
class Caretaker < ActiveRecord::Base
has_many :message_group_memberships
has_many :message_groups, through: :message_group_memberships
end
class MessageGroupMembership < ActiveRecord::Base
belongs_to :member, polymorphic: true
belongs_to :message_group
end
class MessageGroup < ActiveRecord::Base
has_many :message_group_memberships
has_many :members, through: :message_group_memberships
has_many :messages
def group_containing(members)
# method goes here.
end
end
感谢您的帮助,但members.id没有定义。通过的成员是一组成员。 – Nick
@Nick现在检查更新的代码 –