###前提・実現したいこと
Rails4.2.5でMySQLを使用しています。
ActiveRecordのeager_load、preloadなどを用い、to_json時に一度のクエリでデータを取得したいです。
以下のようなコードを実現したのですが、Userに対して複数のクエリが発行されてしまいます。
クエリ数がレコード数とも合わず(750件の出力に対し、15件のSQLが発行されるなど)、
よくわからないため質問させていただきます。。。
###該当のソースコード
app/models/article.rb
ruby
1belongs_to :create_user, class_name: :User, foreign_key: :c_user_id 2belongs_to :update_user, class_name: :User, foreign_key: :u_user_id
実行コード
ruby
1Article 2 .eager_load(:create_user, :update_user) 3 .to_json(include: [:create_user, :update_user])
###試したこと
to_jsonのincludeに渡す値をハッシュなどにしてみる、preloadを試してみる、などはサラッと試しました。
また、create_user/update_userどちらか片方だけの場合、複数クエリは発行されないようです。
###補足情報
- user.rbの方には特に記述はありません
- 返ってくるjson自体は、欲しいものが返ってきています
- 実際のコードではSTI機能を使っており、モデル名なども本稿と差異があります
- プロジェクトの都合上、開示しづらい情報なのでご了承ください
他に何か必要情報などがあればコメントおねがいします。
あなたの回答
tips
プレビュー