这是在ActiveRecord 3.1中执行“不在”的最佳方式吗?

时间:2011-06-02 23:25:28

标签: ruby-on-rails-3 activerecord

我真的很想能够:

Product.where(:id => [40,41,42])

这会产生一个不错的where id in (40,41,42)

然而,我只能弄清楚如何做反向:

Product.where("id not in (?)", [40,41,42])

有更清洁的方式吗?

感谢。

2 个答案:

答案 0 :(得分:1)

不,你就是这样做的。没有更短的路,至少与香草ARel。您可以在meta_where内找到可以执行此操作的内容。

答案 1 :(得分:1)

你可以这样做:

Product.all.delete_if{|x| [41,42,43].include? x.id }

==>包含所有产品的数组,不包括具有给定ID的产品。