class Topic < ActiveRecord::Base
has_many :topic_flags
named_scope :most_flags, lambda {|min_flags| {:joins => :topic_flags,
:group => "topic_flags.topic_id",
:order => "count(topic_flags.topic_id) desc",
:having => ["count(topic_flags.topic_id) >= ?", min_flags] }}
end
При этом используется внутреннее объединение, поэтому он не выбирает темы с нулевыми флагами.Вы бы назвали это так.
Topic.most_flags(3) # returns a sorted list of all topics with at least 3 flags.