Railsの検索クエリから結果セットを取得します。私はその結果セットを反復処理し、特定の基準に応じて、その結果セットからレコードを削除してから、それをさらに処理するために渡します。追加基準はデータベースに保持されているデータの外部にあるため、元の 'find'クエリには追加できません。Activerecordクエリの結果セットから項目を削除するには?
注意データベースからレコードを削除する必要はなく、結果セットからレコードを削除するだけです。
誰かが私にそれを行うコードを教えてください。
Railsの検索クエリから結果セットを取得します。私はその結果セットを反復処理し、特定の基準に応じて、その結果セットからレコードを削除してから、それをさらに処理するために渡します。追加基準はデータベースに保持されているデータの外部にあるため、元の 'find'クエリには追加できません。Activerecordクエリの結果セットから項目を削除するには?
注意データベースからレコードを削除する必要はなく、結果セットからレコードを削除するだけです。
誰かが私にそれを行うコードを教えてください。
のように:いくつかの処理はアプリケーションコードでそのSQLを行わなければならない場合
irb(main):005:0> c = Category.all
Category Load (0.3ms) SELECT "categories".* FROM "categories"
=> [#<Category id: 1, name: "15 anos", description: nil, created_at: "2011-09-22 04:52:53", updated_at: "2011-09-22 04:52:53">]
irb(main):006:0> c.delete_at(0)
=> #<Category id: 1, name: "15 anos", description: nil, created_at: "2011-09-22 04:52:53", updated_at: "2011-09-22 04:52:53">
irb(main):007:0> c
=> []
これはデータベースからエントリを削除しますか? – JustBasti
をできる 結果は変更されたクエリオブジェクトでなければならず、オブジェクトをid
で再度クエリすると(非常にメモリ非効率的な)オプションになる可能性があります。
needed_ids = Model.where(<some original query>).map{|r| r.something? ? r.id : nil }.compact
new_collection = Model.where(id: needed_ids)
あなたが探していたものは見つかりましたか? – Magnum
これは、「広すぎる」または「オフサイトリソースの推奨」として閉じることができます。 – halfer