我们刚刚将 Rails 应用程序从 3.0.13 更新到 3.2.6,并且在使用 mysql2 的 Active Record 查询接口(interface)的 .where 方法时遇到了一个小问题。
以前的工作原理:
client = Client.first
User.where(:client => client)
现在导致:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'users.client' in 'where clause': SELECT
users
.* FROMusers
WHEREusers
.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"
最佳答案
我们刚刚发现这个功能是由一个名为 meta_where 的 gem 提供的。 ,在 Rails 3.1+ 中已弃用。 还有一个替代方案,squeel ,不幸的是它没有提供完全相同的语法。 (或者我们只是还没有发现......) 现在正在调查...
感谢@zsquare 的指出。
关于mysql - ActiveRecord::StatementInvalid: Mysql2::在 .where 方法中使用关联名称而不是外键时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395126/