Mysql Rails中的歧义子句

Mysql Rails中的歧义子句,mysql,ruby-on-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 有人知道如何让这变得

我正在做一个多态连接,如下所示:

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
有人知道如何让这变得不含糊吗?:)

名称必须是作业和其他对象(表)中的属性(和列),因此需要完全限定

改变

"name like..." 

就像你在排位赛一样

"jobs.name"

它不喜欢
名称like
部分

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

这看起来应该是

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


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

您真的将类命名为Object吗?或者只是为了这个代码示例?只是好奇而已
.where("jobs.name LIKE :name OR job_number LIKE :name", {:name => "JOB" } )
.where("customers.name LIKE :name OR job_number LIKE :name", {:name => "JOB" } )