Вы можете использовать базовый метод ActiveRecord find
, чтобы сделать это. Код будет выглядеть примерно так:
@revisions = Revision.all(
:select => "background_title, count(*) count", # Return title and count
:group => 'background_title', # Group by the title
:order => '2 desc' # Order by the count descending
)
Чтобы увидеть результат, вы можете сделать что-то вроде этого:
@revisions.each do |revision|
puts "Revision #{revision.background_title} appears #{revision.count} times"
end
1008 * дает *
Revision z appears 10 times
Revision a appears 3 times
Revision b appears 2 times
Другой вариант - взглянуть на ActiveRecord::Calculations
:
http://api.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html
Вычисления поддерживают метод count
, который также поддерживает параметр group
. Однако, следуя этому маршруту, вы получите хеш, содержащий background_title
в качестве ключа и count
как значение. Лично найдите первый способ более полезным.