如何在Ruby on Rails中为内容创建“最近流行”栏?

时间:2010-01-21 19:38:35

标签: ruby-on-rails activerecord

我是 noob 所以请原谅,如果这是一个简单的问题,但我正在尝试为rails项目中的特定内容创建“最近流行”输出。

现在我提取的对象有一个属性revision.background_title。我想通过查找过去七天中添加的特定background_title的数量来计算流行度,然后将它们整理好。例如,如果有4个background_title名为'awesomecontent',那么它将高于一个名为'less awesome content'的background_title

这拉动了所有这些:

@revisions = Revision.find(:all,:order =>“created_at desc”)

感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用基本的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

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作为值。就个人而言,找到第一种方法更有用。