1

Active Record Reputation gem https://github.com/twitter/activerecord-reputation-system/wiki/Scope-Reputationsをいじっています。私のアプリケーションでは、ユーザーが回答に対して受け取る投票ごとに評判ポイントを取得し、最高の回答を受け取った場合に追加のポイントを取得する評判システムを作成しました (そのコードは示されていません)。このUser.rbモデルでは、「カルマ」の評判 (以下を参照) を計算します。これは、彼が受け取った 2 種類のポイントの合計です。

has_reputation :karma,
    :source => [
      { :reputation => :total_vote_points },
      { :reputation => :total_best_points }
    ]

  has_reputation :total_vote_points,
    :source => {reputation: :votes, of: :answers}

  has_reputation :total_best_points, 
    :source => {reputation: :best, of: :answers}

total_vote_points レピュテーションは、target_id:8 がユーザーの ID である、このようなテーブル レコードを作成します。

#<ReputationSystem::Reputation id: 24, reputation_name: "total_vote_points", value: 1.0, aggregated_by: "sum", target_id: 8, target_type: "User", active: true, created_at: "2013-03-25 06:07:28", updated_at: "2013-03-25 06:07:28">

カラムの評判は、このようなテーブル レコードを作成します

#<ReputationSystem::Reputation id: 28, reputation_name: "karma", value: 11.0, aggregated_by: "sum", target_id: 7, target_type: "User", active: true, created_at: "2013-03-25 06:07:35", updated_at: "2013-03-25 06:07:35">

次に進むと、gem のドキュメントではスコープをレピュテーションに追加できると書かれていますが、詳しくは説明しません。この例を示します

has_reputation :name,
    ...
    :scopes => [:scope1, :scope2, ...]

上記のコードを使用すると、「thisWeek」と「allTime」のカルマ ポイントを確認したい場合、次のようになると思います。

  has_reputation :karma,
    :source => [
      { :reputation => :total_vote_points },
      { :reputation => :total_best_points }
    ], 
    :scopes => [:thisWeek, :allTime]

:thisWeek (今週獲得したカルマ ポイント) および :allTime (制限のないカルマ ポイント) スコープ メソッドをどのように記述すればよいか考えています。

「カルマ」のレピュテーション テーブル レコードは次のようになります。

 #<ReputationSystem::Reputation id: 28, reputation_name: "karma", value: 11.0, aggregated_by: "sum", target_id: 7, target_type: "User", active: true, created_at: "2013-03-25 06:07:35", updated_at: "2013-03-25 06:07:35">

目的のスコープ メソッドの記述方法を提案できますか?

4

0 に答える 0