我正在做这样的多态连接:
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 暧昧吗? :)
答案 0 :(得分:7)
它不喜欢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。
答案 1 :(得分:3)
name必须是两个作业中的属性(和列),无论其他对象(表)是什么,因此它必须是完全限定的。
更改
"name like..."
到
"tablename.name like..."
就像你正在排位赛一样
"jobs.name"