[英]How to 'back calculate' Merit points?
我正在嘗試使用Merit將信譽系統添加到現有應用程序中。
我想根據所有用戶的歷史活動來為其計算積分。 優點有很多表,內部結構非常復雜,我想我可能缺少一些重要步驟。 以下是到目前為止的內容,對於那些熟悉此gem的人,我深表感謝。
為了簡單起見,假設我要
score 2, to: :user, on: 'comments#create'
而且我有一個Comment表,里面充滿了像這樣的記錄
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::Action.action_value
, Merit::ActivityLog.description
和Merit::Score::Point.log
的目的是什么,或者這些僅僅是自由文本字符串?
Merit能夠通過Merit::Action
重新計算每個用戶的聲譽。 在這個StackOverflow答案中,您可以看到使用優點的現有應用程序可能如何:
processed: false
在您的特定情況下,您要創建的唯一Merit模型是action
,並將其初始化為已processed: false
而不是true
。 Merit::Action.check_unprocessed
然后應重新創建您尋求的聲譽。
此Wiki文章介紹了優點內部原理,可能有助於您了解這些步驟背后的邏輯。
Merit::Action.action_value
, Merit::ActivityLog.description
和Merit::Score::Point.log
在功績上沒有有意義的行為,您可以根據需要使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.