2013-08-27 8 views
5

Rails 3では、私がdbにヒットしたい場合は、クエリの最後に.allを使用します。これは、書き込み時にキャッシュをリフレッシュするようなことをしているときに便利です(常にキャッシュにヒットするため)。Rails 4のRails 3 'Model.all'に相当する

Rails 4では、Model.allはActiveRecord::Relationオブジェクトを返します(つまり、dbにヒットしません)。それを実際にdbに移動し、指定されたレコードを返す最良の方法は何ですか?

@Bigxiangは、Model.all.load、特定のヒットのために、この方法のデータベースが、それでもをしようとする彼のコメントで指摘:Railsの4中

+0

try Model.all.load – Bigxiang

+0

@Bigxiang:["戻り値はレコードではなくリレーションです]"(http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method- i-負荷)。 –

+0

ああ、申し訳ありませんが、私の間違い。私は "to_a"がうまくいくと思います。 – Bigxiang

答えて

8

Model.all.to_aは、改正のRails 3

Modal.allと同じ結果が得られますActiveRecordRelationを返します。そして、基本的に "Rails 3"からModel.allと同じ機能を得るには、ActiveRecordRelationto_aと呼ぶことができます。

+0

はい、私は不注意に文書を読んで、 "to_a"はいいです:) – Bigxiang

+0

私はこの同じ問題で爆発しました投稿してくれてありがとう –

+0

それはあなたがすでにActiveRecord :: Relationを持っているなら、 .all'。例:Rails 3.2で 'Model.where(name:" John ")。all"を使用している場合、 'Model.where(name:" John ")。to_aではなく、 : "John")。all.to_a in Rails 4 – Felix

関連する問題