23

特定の ID を持つレコードを除くすべてのレコードを返す ActiveRecord クエリを実行したいと考えています。除外したいIDは配列に格納されています。そう:

ids_to_exclude = [1,2,3]
array_without_excluded_ids = Item. ???

2行目を完成させる方法がわかりません。

背景:私がすでに試したこと:

バックグラウンドが必要かどうかはわかりませんが、既に .find と .where のさまざまな組み合わせを試しました。例えば:

array_without_excluded_ids = Item.find(:all, :conditions => { "id not IN (?)", ids_to_exclude })
array_without_excluded_ids = Item.where( "items.id not IN ?", ids_to_exclude)

これらは失敗します。 このヒントは正しい方向に進んでいるかもしれませんが、私はそれを適応させることに成功していません. どんな助けでも大歓迎です。

4

4 に答える 4

32

これは機能するはずです:

ids_to_exclude = [1,2,3]
items_table = Arel::Table.new(:items)

array_without_excluded_ids = Item.where(items_table[:id].not_in ids_to_exclude)

そしてそれは文字列のない完全なオブジェクト指向です:-)

于 2011-01-03T01:09:50.487 に答える
2

Squeelgemを使用してこのようなクエリを実行することもできます。それのドキュメントは、ここに行きます

于 2013-02-19T11:03:37.580 に答える