mysql - Rails 中的歧义子句

标签 mysql ruby-on-rails

我正在像这样进行多态连接:

Object.joins(:customer).includes("jobs.name").merge(@customer.children.scoped).where("name LIKE :name OR job_number LIKE :name", {:name => "JOB" } )

它会这样返回:

Mysql2::Error: Column 'name' in where clause is ambiguous

有谁知道如何让这个un变得模棱两可? :)

最佳答案

它不喜欢 name LIKE 部分。

看起来每个表中都有一个名为 name 的列。在特定的 name 前面加上您希望该值来自的表的名称。

看起来应该是这样

.where("jobs.name LIKE :name OR job_number LIKE :name", {:name => "JOB" } )

.where("customers.name LIKE :name OR job_number LIKE :name", {:name => "JOB" } )

总的来说,我发现解决这些问题的最佳方法是查看生成的 sql 并确定问题出在哪里。你可以在日志中找到sql。

关于mysql - Rails 中的歧义子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589706/

相关文章:

mysql - DLookUp 查询 MySql

ruby-on-rails - Rails : Determine if an object has a named route

ruby-on-rails - 使用 Capybara 从 select 中选择任何项目

ruby-on-rails - 通过子 before_save 回调使父模型保存无效

php - sql 使用 start_time 和 end_time 进行复杂数据排序

mysql - 构建复杂 MySQL 连接和组的最佳方法?

php - 简单的 PHP 登录不会连接到数据库

mysql - 'second'是mysql全文搜索的关键字吗?

ruby-on-rails - 在 Rails 中使用 NetHTTP 打 Rails

ruby-on-rails - Haml::Engine.render 不会将 block 中的内容放入适当的包含元素中