Qua*_*tum 3 activerecord ruby-on-rails-3
我有以下查询正常工作
ObjectItem.find(:all, :include => :object_groups, :conditions => "object_items.description LIKE '%#{search}%' OR object_groups.description LIKE '%#{search}%'", :order => 'object_items.created_at DESC')
Run Code Online (Sandbox Code Playgroud)
但是以这种方式进行查询现在已被弃用,因此我正在尝试更改为此表单
ObjectItem.order('object_items.created_at DESC').includes(:object_groups).where("object_items.description LIKE '%#{search}%' OR object_groups.description LIKE '%#{search}%'")
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Mysql2::Error: Column created_at in order clause is ambiguous: SELECT DISTINCT `object_items`.id FROM `object_items` LEFT OUTER JOIN `object_groups_object_items` ON `object_groups_object_items`.`object_item_id` = `object_items`.`id` LEFT OUTER JOIN `object_groups` ON `object_groups`.`id` = `object_groups_object_items`.`object_group_id` WHERE (object_items.description LIKE '%%' OR object_groups.description LIKE '%%') ORDER BY object_items.created_at DESC, created_at DESC LIMIT 20 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
小智 15
order('users.created_at DESC')
基本上问题是可能存在连接查询,因此表都有created_at字段,因此它抛出错误.如果要根据create_at表格对结果进行排序,请使用您在其上订购结果的table_name.field_name.
这通常是同一字段名称出现在多个表中的结果。
在您的情况下,object_items 和 object_groups 看起来都有相同的字段“created_at”。
最好的事情(在我看来)是通过(例如)使用字段名称的前缀来重命名其中一个表中的字段。
| 归档时间: |
|
| 查看次数: |
7540 次 |
| 最近记录: |