1

私は助けが必要です。Ruby プロジェクトを最適化しています。単一のクエリがたくさんあるので、ID の配列を使用して一度に読み取ります。例:

projects = Project.find_by_id(array_of_ids)

そして、速度が大幅に向上しました。しかし、問題は、そのような結果を検索したいときです。そのような結果をどのように処理できますか?

p = projects .find{ |project| project.id==pr.id } # doesn't work

「プロジェクト」を配列に変換したり、さらにアクティブ レコード メソッドを使用したりできますか? Activerecord を使用して、いくつかのパラメータでグループ化された「プロジェクト」の 2 次元配列を取得できますか?

4

2 に答える 2

1

Array の代わりに ActiveRecord::Relation オブジェクト (さらに SQL クエリを実行できるオブジェクト) を返したい場合は、scoped_by_*代わりにこのメソッドを使用する必要があります。find_by_*

の説明はscoped_by_*ここにあります: http://api.rubyonrails.org/classes/ActiveRecord/Base.html

を使用している場合、コードは次のようになりますscoped_by_*

projects = Project.scoped_by_id(array_of_ids)
p = projects.find(pr.id)
于 2012-10-22T07:08:25.583 に答える
0

ここであなたが見逃していることがいくつかあります

a) projects = Project.find_by_id(array_of_ids)

1つの結果のみが得られます

取得して配列するには、このようなクエリを起動する必要があります

a) projects = Project.find_all_by_id(array_of_ids)

Rails 3+で必要なことがarelで簡単に実行できる場合、どのバージョンのRailsを使用していますか

 b) projects = Project.where("id in (?)",array_of_ids)

これで関係オブジェクトが得られ、さらにクエリを連鎖させることができます

Rails 2.3 以降を使用している場合は、named_scopeまたはlambdaを使用してこれを行うことをお勧めします。

この助けを願っています

于 2012-10-22T07:07:30.510 に答える