我正在尝试使用Merit将信誉系统添加到现有应用程序中。
我想根据他们的历史活动为所有用户计算积分。Merit 的内部结构相当复杂,有几张表,我想我可能遗漏了一些重要的步骤。以下是我到目前为止所拥有的,我很感激任何更熟悉这个宝石的人的指点。
为了简单起见,假设我想
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::ActivityLog.description
和Merit::Score::Point.log
, 或者这些只是自由文本字符串的目的是什么?