如何通过匹配外键数组来获取对象?
问题描述:
我有2个模型:组和用户在我的rails应用程序。如何通过匹配外键数组来获取对象?
集团有许多用户。
在我的应用程序中,我想使用用户ID数组来检查组是否存在。
我一直在使用这种方法Group.joins(:users).find_by('users.id' => [1,2,3])
尝试,但这种将获取所有包含分别每个用户ID的组对象。
我想实现的是获取与user_id数组完全匹配的组对象。
请帮忙!
答
你可以使用find
在Group
集合(即的ActiveRecord ::关系)和数组VS每个Group
的users.ids
,这样的比较:
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])