在我的Rails 5 + Postgres应用程序中,我有一张乘客表。我选择了这些乘客的子集并将它们存储为乘客。
passengers = Passenger.where(...)
每位乘客都有一个Id。
我还有一个ID [1,2,3,6,8,9]
列表。
现在我想检查那些给定的Ids是否存在于乘客对象中的Ids。
有什么想法吗?
由于
答案 0 :(得分:2)
加载所有数据只是为了检查在数据库中你需要多少时效率不高,你可以做的最好的是:
ids = [1,2,3,6,8,9]
passengers_count = Passenger.where(id: ids).count
passengers_count == ids.count
答案 1 :(得分:1)
您是否需要检查所有是否存在,或至少有一个存在?
ids = [1,2,3,6,8,9]
passenger_ids = passengers.collect(&:id)
def contains_all(ids, passenger_ids)
ids.each do |id|
return false unless passenger_ids.include?(id)
end
return true
end
或单线
(passenger_ids & ids) == ids
def contains_any(ids, passenger_ids)
ids.each do |id|
return true if passenger_ids.include?(id)
end
end
或(再次!)单线
(passenger_ids & ids).size > 0
答案 2 :(得分:0)
如果我理解你的问题,下面应该给你所有id为你的ids阵列一部分的乘客
passengers.collect(&:id) & [1,2,3,6,8,9]