0

我想得到一个集合中不存在的集合。如下所示:

ids = [1,2,3,4,5] # 2,3,4 is not exists
User.where(:id => ids)

我想要一套 [2,3,4]

在不影响性能的情况下,有好的解决方案吗?

4

2 回答 2

2

使用以下内容:

ids - User.where(id: ids).select(:id).map(&:id)
于 2013-05-03T09:49:29.347 回答
2

对于 Rails 3.2 pluck,它返回单个列的值:

User.pluck(:id)
# => [1,5,6,7,...] # all user ids

或者,在您的情况下:

ids = [1,2,3,4,5] # 2,3,4 do not exist
ids - User.where(id: ids).pluck(:id)
# => [1,5]
于 2013-05-03T13:46:59.647 回答