Если предположить, что атрибуты, перечисленные в модели элементов, являются столбцами базы данных, вы можете сделать много вещей.
Самый простой, вероятно, named_scopes
/ приложение / модели / category.rb
class Category < ActiveRecord::Base
has_many :items
# attributes: name
named_scope :sorted_by_price, :joins => :items, :group => 'users.id', :order => "items.price DESC"
named_scope :sorted_by_rating, :joins => :items, :group => 'users.id', :order => "items.rating DESC"
named_scope :active, :condition => {:active => true}
end
Тогда вы можете просто использовать Category.sorted_by_price, чтобы получить список категорий, отсортированных по цене, от самой высокой до самой низкой. Преимущества named_scopes позволяют объединять несколько похожих запросов. Используя приведенный выше код, если ваша категория имеет логическое значение с именем active. Вы могли бы использовать
Category.active.sorted_by_price для получения списка активных категорий, упорядоченных по их наиболее дорогому элементу.