0

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 FROMWHERE usersclient= 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"
4

1 に答える 1

1

この機能は、Rails 3.1 以降では非推奨となっているmeta_whereという gem によって提供されていることがわかりました。残念ながら、まったく同じ構文を提供しない代替のsqueelがあります。(または、まだわかっていないだけです...) 現在調査中...

指摘してくれてありがとう@zsquare。

于 2012-07-10T09:02:22.993 に答える