我有2个型号:我的rails应用程序中的组和用户。
群组有很多用户。
在我的应用中,我想使用一组用户ID来检查一个组是否存在。
我尝试过使用此方法Group.joins(:users).find_by('users.id' => [1,2,3])
但这会获取包含每个用户ID的所有Group对象。
我想要实现的是获取与user_id数组完全匹配的组对象。
请帮忙!
答案 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])