Как создать панель «Самые последние» для контента в Ruby on Rails? - PullRequest
1 голос
/ 21 января 2010

Я noob , поэтому, пожалуйста, простите, если это простой вопрос, но я пытаюсь создать вывод «Самые последние» для конкретного контента в проекте rails.

Прямо сейчас объект, из которого я извлекаю, имеет атрибут revision.background_title. Я хочу рассчитать популярность, найдя количество определенных background_title, добавленных за последние семь дней, а затем приведем их в порядок. Например, если есть 4 background_title с именем «awesomecontent», то это будет выше того, который имеет 1 background_title с именем «менее удивительный контент»

Это тянет их всех:

@ revisions = Revision.find (: all,: order => "made_at desc")

Спасибо.

1 Ответ

3 голосов
/ 22 января 2010

Вы можете использовать базовый метод 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 как значение. Лично найдите первый способ более полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...