我正在像这样进行多态连接:
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/