ActiveRecord :: StatementInvalid:Mysql2 ::在.where方法而不是外键中使用关联名称时出错

时间:2012-07-09 12:35:42

标签: mysql ruby-on-rails activerecord ruby-on-rails-3.2

我们刚刚将Rails应用程序从3.0.13更新到3.2.6,并且在使用Active Record Query Interface的.where方法和mysql2时遇到了一个小问题。

之前的工作:

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

现在导致:

  

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

但是当明确使用外键的列名时,它似乎工作正常:

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

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

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

rails版本:

gem "rails", "~> 3.2.6"

mysql2版本:

gem "mysql2", "~> 0.3.11"

1 个答案:

答案 0 :(得分:1)

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

感谢@zsquare指出。