ActiveRecordのバージョン 4.0.0 のfind_each
ActiveRecord 関数の代わりとして受け入れられるものはありますか?all
たとえば、以前は次のことがありました。
all_users = User.all
これは、ActiveRelation:all の行に沿った何かが非推奨であることを示す警告を生成します。
代わりに私が思いついたのは:
User.find_each do |user|
all_users += user
end
これは受け入れられますか、それとも別の方法で行う必要がありますか?
使用の背後にある理由find_each
は、非常に大きなデータセットがある場合にクエリの実行を停止できる「バッチ処理」のためであることを理解しています。この場合、データセットが小さいと仮定しましょう。
編集
次のような条件を使用した場合にのみ、非推奨エラーが発生するようです。
User.all(:conditions => ["name like ?", "%bob%"])
生成:
非推奨の警告: Relation#all は非推奨です。リレーションを熱心に読み込みたい場合は、#load を呼び出すことができます (例:
Post.where(published: true).load
)。リレーションからレコードの配列を取得したい場合は、#to_a を呼び出すことができます (例:Post.wher e(published: true).to_a
)。((irb):8 の irb_binding から呼び出されます)
上記の正しい置き換えは次のようになります。
User.where("name like ?", "%bob%")