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" } )