2012-06-04 52 views
0

我有这些在我的控制器:Meta_search误差模型关联

class AccountsController < ApplicationController 
def index 
    @search = Account.search(params[:search]) 
    @accounts = @search.order("id desc").includes(:chef).page(params[:pagina]).per(10) 
end 
end 

我的观点:

<%= f.text_field :username_or_email_or_chef_name_contains %> 

工作正常!如果我脱下.includes

ActiveRecord::StatementInvalid in Accounts#index 
Mysql2::Error: Column 'id' in order clause is ambiguous: SELECT `accounts`.`id` AS t0_r0, `accounts`.`chef_id` AS t0_r1,... 

(:厨师)账户控制器,工作正常但是,当我基于电子邮件搜索,我得到这个错误。

问题

为什么这个错误?出于性能原因,我不想从帐户控制器中删除include

回答

1

账户表和厨师表每个都有一个id列,所以MySQL不知道应该按照哪些列排序。尝试在order by子句中指定表名:

@accounts = @search.order("accounts.id desc").includes(:chef).page(params[:pagina]).per(10) 
+0

Thanks!我知道了。 – maiconsanson