如何在acts_as_votable中提取最高投票的模型实例?

假设我有一个在act_as_votable插件下的post模型。 如何获得投票最多的前30个post? 它应该很简单; 但是,我找不到插件中的任何文档,详细说明了这一点。

我意识到这是一个老问题,尽管如此,我遇到了同样的问题,感觉就像离开这里我的解决方案。 因此,我完成的方法是通过运行下面的迁移,如文档所述。

class AddCachedVotesToPosts < ActiveRecord::Migration def self.up add_column :posts, :cached_votes_total, :integer, :default => 0 add_column :posts, :cached_votes_score, :integer, :default => 0 add_column :posts, :cached_votes_up, :integer, :default => 0 add_column :posts, :cached_votes_down, :integer, :default => 0 add_index :posts, :cached_votes_total add_index :posts, :cached_votes_score add_index :posts, :cached_votes_up add_index :posts, :cached_votes_down end def self.down remove_column :posts, :cached_votes_total remove_column :posts, :cached_votes_score remove_column :posts, :cached_votes_up remove_column :posts, :cached_votes_down end end 

然后在我的模型中我添加了下面的类方法

 class Post def self.highest_voted self.order("cached_votes_score DESC") end end 

之后, Post.highest_voted将返回最高投票的post。

为了返回30个post,你可以做一些像Post.highest_voted.limit(30)