特定のコントローラーでは、rails s
に失敗した次の照会があります。 rails c
で失敗していません。このActiveRecordステートメントはサーバーではなくコンソールでは失敗します。
Post.includes(:user).find(:all, :limit => 10, :order => 'users.display_name ASC')
コンソールでは、正しいデータが返されます。サーバーでは、私はこのエラー
ActiveRecord::StatementInvalid: PGError: ERROR: column posts.users.display_name does not exist
LINE 1: ...s_count" AS t0_r7, "posts"."popularity" AS t0_r8, "posts"."u...
^
を取得するクエリが長く、私はコントローラで
: SELECT "posts"."id" AS t0_r0, "posts"."post_content" AS t0_r1,
...
"posts"."popularity" AS t0_r8, "posts"."users.display_name" AS t0_r9,
"posts"."subtopics.name" AS t0_r10, "posts"."categories.category_name"
AS t0_r11
...
FROM "posts" LEFT OUTER JOIN "users" ON "users"."id" = "posts"."user_id"
ORDER BY users.display_name ASC LIMIT 10
いくつかの関連するスニペットをちょうど含まれます、クエリは3つの余分な用語を生成します。クエリは、t0_r9、t0_r10、およびt0_r11というラベルを付けます。それは私がそのコントローラアクションの観点からそれらの特定の列を参照しているので、ARがこれを追加しているようです。私はそれがなぜそれをするのかわかりませんが、それはincludes
の目的です。
ARやPGの宝石のいずれかでバグを発見した可能性がありますが、私は他の目でこれを確認したいと思います。 –
クエリ生成に影響を与える可能性のある宝石、プラグイン、またはサルのパッチを使用していますか?このような奇妙な問題に遭遇すると、それは通常私の問題です。 –
確かにサルのパッチやプラグインはありません。私がこのクエリに関連して使用していた唯一の宝石はwill_paginateでしたが、私はその投稿を使わずにエラーを再現しました。 PG gemは、PostgreSQL用のActiveRecordアダプタです。これをコンソールから実行すると、宝石やプラグインが表示されずロードされませんか? –