Railsアプリを3.0.13から3.2.6に更新したところ、mysql2でActive RecordQueryInterfaceの.whereメソッドを使用するときに小さな問題が発生しました。
以前は機能していたもの:
client = Client.first
User.where(:client => client)
今につながる:
ActiveRecord :: StatementInvalid:Mysql2 :: Error:不明な列'users.client' in'where句':SELECT
users
。*users
FROMWHEREusers
。client
= 1
ただし、外部キーの列名を明示的に使用すると、問題なく機能するようです。
client = Client.first
User.where(:client_id => client.id)
#=> Relation of users with the given client_id
関連付けは変更されていません(ユーザーはクライアントに属し、クライアントには多くのユーザーがいます)。これは現在、この種のすべての協会の問題のようです。
これらすべてのwhereクエリを変更して、foreign_keyを使用するようにする必要がありますか、それとも他の方法がありますか?
Railsバージョン:
gem "rails", "~> 3.2.6"
mysql2バージョン:
gem "mysql2", "~> 0.3.11"