gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:23:30 26 4
gpt4 key购买 nike

我们刚刚将 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.* FROM users WHERE users.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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com