2013-06-02 4 views
0

В моем приложении у меня есть модель продукта, в которой есть отзывы об ошибках.Rails - как сортировать по ассоциированному атрибуту

В моем контроллере я хотел бы заказать массив продуктов по количеству отзывов.

Контроллер модели

@search = Product.search_attributes(params[:search]) 
@products = @search.sort_by_reviews_count 

продукта:

def self.sort_by_reviews_count 
    self.sort! { |x,y| x.reviews.count <=> y.reviews.count } 
end 

Однако, я получаю следующее сообщение об ошибке:

undefined method `sort!' for #<Class:0x007ff019ebf468> 

Почему это происходит?

+0

Это работает, если вы преобразовать его в массив первой? 'All.sort!'? –

ответ

2

Потому что вы пытаетесь подобрать свой класс Product < ActiveRecord::Base. Это не имеет смысла.

Возможно, вы сможете сортировать ассоциации в базе данных с использованием отношения AR, но я не уверен, как это сделать.

Если вы не возражаете делать сортировку в приложении, вы должны быть в состоянии сделать это:

def self.sort_by_reviews_count 
    self.all.sort! { |x,y| x.reviews.count <=> y.reviews.count } 
end 
Смежные вопросы