3

https://github.com/twitter/activerecord-reputation-systemにあるactiverecord-reputation-systemgemを使用しています。私のアプリケーションには、投票で並べ替えたい投稿があります。

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

宝石からの方法。また、ページングして検索できるようにするために必要な十分な投稿があります。ただし、投稿コレクションで通常機能するページまたは検索メソッドを呼び出すと、メソッドが存在しないというエラーが発生します。私の通常のコレクション呼び出しは次のようになります

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

ページングにカミナリを使用しています。find_with_reputationメソッドを他のクエリパラメータと組み合わせる方法を知っている人はいますか?

4

2 に答える 2

3

通常のActiveRecordfinderメソッドのように:

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
于 2012-07-20T07:58:48.423 に答える
0

別の解決策を見つけました: Active Record Reputation System gemを使用すると、投票で並べ替えても並べ替えが行われません

@posts = Post.page(params[:page]).reorder('votes desc').find_with_reputation(:votes, :all)
于 2016-04-12T18:56:28.383 に答える