将activerecord-reputation-system查询与分页相结合

时间:2012-07-19 20:44:04

标签: ruby-on-rails-3 activerecord gem

我正在使用位于https://github.com/twitter/activerecord-reputation-system的activerecord-reputation-system gem。在我的申请中,我有一些帖子,我希望通过投票使用

进行排序

ActiveRecord::Base.find_with_reputation(:reputation_name, :scope, :find_options)

来自gem的

方法。我也有足够的帖子,我需要它们被分页和搜索。但是每当我调用通常在我的帖子集合上工作的页面或搜索方法时,我得到一个方法不存在错误。我通常的收集电话看起来像这样

Post.all.text_search(params[:query]).order("created_at desc").page(params[:page]).per(20)

我正在使用Kaminari进行分页。有谁知道如何将find_with_reputation方法与其他查询参数结合起来?

2 个答案:

答案 0 :(得分:3)

与普通的Active Record finder方法类似:

Post.page(params[:page]).per(20).find_with_reputation(:reputation_name, :scope, :find_options)

例如,如果您的帖子有声誉votes

Post.page(params[:page]).per(20).find_with_reputation(:votes, :all, {:order => 'votes DESC, created_at DESC'})

这将找到按声誉,创建日期和分页排序的帖子。

您还可以在模型中为该查找器创建范围:

def self.most_voted
  find_with_reputation(:votes, :all, {:order => 'votes DESC'})
end

然后使用:

Post.page(params[:page]).per(20).most_voted

答案 1 :(得分:0)

我找到了另一个解决方案: Using Active Record Reputation System gem, no sorting happens when I sort by votes

@posts = Post.page(params[:page]).reorder('votes desc').find_with_reputation(:votes, :all)