2016-04-26 8 views
0

外部結合とレンダリングjsonでアクティブレコードを作成しました。私はこれをレンダリングするときに私は外側の結合テーブルのデータを取得していないよ。それを外部結合用アクティブレコードのjsonとしてレコードをリストする方法

@recent_details = Property 
    .includes(:space_amenities,:event_suitabilities,:purpose_suitabilities,:venue_categories) 
    .where(id: params[:id]) 
render json: @recent_details 

を取得するためにどのようにこれは私が

json.recent_details @recent_details 

index.jbuiler.jsonフォームをレンダリングする方法ですここで私は、外部結合テーブル以外のプロパティテーブルからすべての詳細を得ました。どのように外側の結合テーブルの結果を得るか

+0

のために作られていますはい、外側は – SreRoR

+0

はJSONレンダリングしてみてください参加する:Property.includes(:space_amenities、:event_suitabilities、:purpose_suitabilities、:venue_categories).where(ID:のparams [:IDを])。 –

+0

to_jsonを私が好きみましたこの。しかし、今回は、プロパティの詳細と最後の1つ(join_suitabilities)である1つのテーブルの詳細を取得しています。すべてのアイデアをどのように追加するのですか? – SreRoR

答えて

0

@recent_details.frist.space_amenitiesのようなデータを取得するには、includesが実際にデータをクエリしますが、すべてのデータを一緒にマージしません。ただ@recent_details.first.space_amenitiesと呼んだとき、includesがあなたのために既に質問されているので、データベースは再び問い合わせをしません。あなたの場合、jsonの結果に追加する列を指定する必要があります。例えば:

json.recent_details @recent_details do |rd| 
    json.space_amenities rd.space_amenities 
end 

これは持っていませんN + 1クエリ問題

あなたがincludes(:space_amenities,:event_suitabilities,:purpose_suitabilities,:venue_categories)を取る場合は、同じコードは、n + 1クエリー問題は、あなたが複数のSQLそのサーバー・ログに表示されますがあります問合せは、各recent_detail

関連する問題