0

我想獲得一個集合中不存在的集合。像下面:如何在Rails集合中設置不存在

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

我希望得到一組[2,3,4]

在不影響性能,有很好的解決方案?

回答

2

使用以下命令:

ids - User.where(id: ids).select(:id).map(&:id) 
+0

User.all ...看起來不那麼好 – plusor 2013-05-03 09:51:21

+0

查看更新的帖子 – 2013-05-03 09:54:20

+0

你打我吧,+1 – Salil 2013-05-03 09:57:00

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] 
+0

太棒了。謝謝 – plusor 2013-05-03 14:24:08