0

こんにちは、

私のクエリ:

@county = County.joins(:state)  
      .where("counties.slug = ? AND states.slug = ?", params[:county_slug])  
      .select('states.*, counties.*')  
      .first!  

ログから、SQL は次のようになります。

SELECT states.*, counties.* FROM "counties" INNER JOIN "states" ON "states"."id" = "counties"."state_id"  LIMIT 1

私の問題は、関連付けられたテーブル (状態) からデータを積極的にロードしないことです。たとえば、@county.state.name を実行すると、別のクエリが実行されるためです。そのテーブルのデータについても、すでにデータベースにクエリを実行していました。ただし、@county.state は事前設定されません。

たった1つのクエリでデータベースからすべてのデータを取得する方法はありますか?

どうも

4

1 に答える 1

0

熱心な読み込みを取得するinclude代わりに使用する必要があると思います。joins違いについての Railscasts の良いエピソードがあります: http://railscasts.com/episodes/181-include-vs-joins、特に:

質問する必要があるのは、「関連するモデルの属性を使用しているか?」ということです。私たちの場合、各コメントに対してユーザーの名前を表示しているので、答えは「はい」です。これは、コメントを取得すると同時にユーザーを取得する必要があることを意味するため、ここでは include を使用する必要があります。

于 2013-03-31T18:02:34.280 に答える