2012-06-04 2 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 %> 

отлично работает! Но, когда я ищу на основе электронной почты, я получил эту ошибку:

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,... 

Если я снять .includes (: шашлычник) контроллера счета, работает отлично.

ВОПРОС

Почему эта ошибка? По соображениям производительности я не хотел бы удалять include из контроллера учетной записи.

ответ

1

Таблица счетов и таблица шеф-поваров имеют столбец id, поэтому MySQL не знает, какой из этих столбцов он должен заказать. Попробуйте указать имя таблицы в порядке по порядку:

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

Спасибо! Я понял. – maiconsanson