如何通过匹配外键数组来获取对象?

时间:2017-11-10 23:51:26

标签: ruby-on-rails activerecord foreign-keys rails-activerecord

我有2个型号:我的rails应用程序中的组和用户。

群组有很多用户。

在我的应用中,我想使用一组用户ID来检查一个组是否存在。

我尝试过使用此方法Group.joins(:users).find_by('users.id' => [1,2,3])

但这会获取包含每个用户ID的所有Group对象。

我想要实现的是获取与user_id数组完全匹配的组对象。

请帮忙!

1 个答案:

答案 0 :(得分:0)

您可以在find集合上使用Group(即ActiveRecord :: Relation),并比较每个users.ids的数组与Group,如下所示:

Group.find { |group| group.users.ids == [1,2,3] }

另外,我建议将该逻辑移至Group模型:

class Group < ApplicationRecord
  has_many :users

  def self.with_users(ids)
    find { | group| group.users.ids == [1,2,3] }
  end
end

然后像这样使用它:

Group.with_users([1,2,3])