У меня есть эта схема:
class Comment
has_many :ratings, :as => :target
end
class Rating
belongs_to :target, :polymorphic => true
end
Я хочу написать именованную область, которая будет сортировать комментарии по их среднему рейтингу, не получая весь список комментариев, а затем получая все свои рейтинги.
Я думаю, мне нужно использовать: include и: group, но я также использую: order? Спасибо.
Вот что я пошел с:
module Ratable
def self.included base
base.has_many :ratings, :as => :target, :dependent => :destroy
base.named_scope :rated, :joins => :ratings, :group => 'target_id', :select => "#{base.table_name}.*, avg(ratings.opinion) as 'average_rating'", :order => 'average_rating desc'
end
end