sqliteで正常に動作していたRailsアプリがありますが、postgreに切り替えると、このクエリで問題が発生します。
User.find(1).ratings
作品だけを検索する、例えば
User.find(1)
を生成します
SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
ただし、このように評価を追加すると、次のようになります。
User.find(1).ratings
を生成します
User Load (1.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
Rating Load (0.9ms) SELECT "ratings".* FROM "ratings" WHERE "ratings"."user_id" = 1
PG::Error: ERROR: operator does not exist: character varying = integer
LINE 1: ...CT "ratings".* FROM "ratings" WHERE "ratings"."user_id" = 1
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "ratings".* FROM "ratings" WHERE "ratings"."user_id" = 1
ActiveRecord::StatementInvalid: PG::Error: ERROR: operator does not exist: character varying = integer
LINE 1: ...CT "ratings".* FROM "ratings" WHERE "ratings"."user_id" = 1
^
:idをintまたはstringとして渡すかどうかに関係なく、上記のエラーが発生します。モデルは、:ratingsbelongs_toユーザー(has_many:ratings)になるように設定されています。何か案は?前もって感謝します。
バージョン:Rails 3.1.1、Ruby 1.9.2、デバイス1.5.1