I have four models:
User (users)
Caretaker (a completely different type of user)
MessageGroup (a group)
MessageGroupMembership (a join table between MessageGroup and (Users && Caretakers))
I am trying to define a method that checks if a group exists with x members(members can be user or caretaker).
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
My issue is that members are polymorphic so I cant quite figure out how best to structure the active record query.
my classes are:
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
Aucun commentaire:
Enregistrer un commentaire