私はMeritを使用して既存のアプリにレピュテーションシステムを追加しようとしています。メリットの計算方法は?
履歴アクティビティに基づいてすべてのユーザーのポイントを計算し直したいと考えています。メリットはいくつかのテーブルを持つかなり複雑な内部構造を持っています。私はいくつかの重要なステップを見逃しているかもしれません。以下は私が今までに持っていたものであり、この宝石に精通している方の指針には感謝しています。
私の現在のアプローチは、この
のように見えるのは、私がscore 2, to: :user, on: 'comments#create'
にしたいとしましょう、私はこの
Comment id: 56, content: "My comment", user_id: 247, commentable_id: 2, commentable_type: 'Object', created_at: "2016-04-04 08:56:17", updated_at: "2016-04-04 17:03:55">
ようになり、レコードの完全なコメントテーブルを持っていること、物事をシンプルに保つために
Comment.all.each do |c|
score_point = Merit::Score::Point.create(num_point: 2, log: nil, created_at: c.created_at)
action = Merit::Action.create(user_id: c.user_id, action_method: 'create', action_value: nil, had_errors: false, target_model: c.class.name, target_id: c.id, processed: true, created_at: c.created_at)
activity_log = Merit::ActivityLog.create(action_id: action.id, related_change_type: "Merit::Score::Point", related_change_id: score_point.id, description: "", created_at: c.created_at)
end
Merit::Score
とMerit::Sash
テーブルがありますが、これらのレコードやレコードの作成が必要かどうかは不明です。
私が見落としたことはありますか?
脇に、Merit::Action.action_value
,Merit::ActivityLog.description
、Merit::Score::Point.log
の目的は何ですか?これらは単純にフリーテキスト文字列ですか。
@TuteCに感謝しましたが、私は以前は答えていましたが、その後のコメントを間違って誤解していたことがわかりました。明らかにしてくれてありがとう!! –
こんにちは@tuteC、 'Merit :: Action.target_model'はどんなフォーマットですか?それは複数の小文字のモデル表現(例:コメント)ですか?このメソッドでポイントを生成するのに問題があります。 'Merit :: Action.check_unprocessed'を実行するとバッジが正しく割り当てられ、' Merit :: Score'にレコードが追加されますが、 'Merit :: Score :: Point'は空のままです。私はこれが正しい結果ではないと考えていますが、原因を理解できないようです。 –
気にしないで、私は以前のポイント定義をメモリ 'Merit :: AppPointRules = Merit :: PointRules.new.defined_rules'からクリアする必要がありました。すべてが今働いています。素晴らしい宝石をありがとう! –