【问题标题】:How to check if polymorphic rails has_many collection contains x elements如何检查多态rails has_many集合是否包含x元素
【发布时间】:2015-07-11 12:32:28
【问题描述】:

我有四个模型:

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 activerecord rails-activerecord


    【解决方案1】:
    def group_containing(members)
      member_ids = members.map(&:id)
      MeesageGroup.joins(:message_group_memberships).where({:message_group_memberships => member_ids})
    end
    

    试试这个

    【讨论】:

    • 感谢您的帮助,但未定义 members.id。传入的成员是一个成员数组。
    猜你喜欢
    • 2018-10-05
    • 2016-10-19
    • 2012-11-10
    • 2015-12-24
    • 1970-01-01
    • 2021-07-16
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多