0

我们刚刚将 Rails 应用程序从 3.0.13 更新到 3.2.6,在使用 mysql2 的 Active Record 查询接口的 .where 方法时遇到了一个小问题。

以前的工作方式:

client = Client.first
User.where(:client => client)

现在导致:

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'users.client' in 'where 子句': SELECT users.* FROM users WHERE usersclient= 1

但是当显式使用外键的列名时,它似乎工作得很好:

client = Client.first
User.where(:client_id => client.id)
#=> Relation of users with the given client_id

关联没有改变(用户属于客户端,客户端有很多用户)。现在这似乎是每个此类协会的问题。

我们现在真的必须更改所有这些 where 查询以便它们使用 foreign_key 还是有其他方法?

导轨版本:

gem "rails", "~> 3.2.6"

mysql2版本:

gem "mysql2", "~> 0.3.11"
4

1 回答 1

1

我们刚刚发现这个功能是由一个名为meta_where的 gem 提供的,它在 Rails 3.1+ 中已被弃用。有一个替代方案,squeel,不幸的是它没有提供完全相同的语法。(或者我们只是还没有发现......)现在调查......

感谢@zsquare 指出。

于 2012-07-10T09:02:22.993 回答