我们刚刚将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
。* FROMusers
WHEREusers
。client
= 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"
答案 0 :(得分:1)
我们刚刚发现这个功能是由名为meta_where的gem提供的,在Rails 3.1+中已弃用。 还有一个替代方法squeel,遗憾的是它没有提供完全相同的语法。 (或者我们还没发现......) 现在调查......
感谢@zsquare指出。