对于我发现非常错误的Active Record Reputation gem感到沮丧,我正在尝试为Rails应用程序创建自己的声誉系统。这很原始。我创建了一个带有user_id和value字段的Contribution资源,以及User.rb和Contribution.rb之间的关联。每当用户以某种方式为应用程序做出贡献时,他们就会获得一些积分。如果他们提出问题,这些行将包含在问题控制器的创建操作中。
@contribution = current_user.contributions.build({:value => 3})
@contribution.save
如果用户在网站上编辑了一些标签,我会做同样的事情来奖励超级用户的行政工作
@contribution = current_user.contributions.build({:value => 2})
@contribution.save
然后,计算用户的总声誉变得非常容易。
这样做的一个问题是,在用户关心这个应用程序及其声誉的想象世界中,游戏系统非常容易。例如,用户可以继续更新类别或标签,每次他们这样做,他们再获得2分。因此,我想以某种方式记录用户做了什么类型的操作。
现在,用户可以获得积分的所有工作都以某种方式与Question.rb相关联,然而,他们获得了更新标签,更新类别,提升其他人的答案等的积分,因此仅将问题存储在贡献中模型是不够的。
根据我告诉你的内容,您能否告诉我如何构建Contributions资源以实现我想要的目标?
例如,我想到了一种方法,它会在我的数据库中留下很多空字段,所以我认为这不是一个好方法。我可以添加question_id
和几个布尔字段,例如'answering_question''updating_category
''updating_tags
',每次执行某个操作时,都会记录为'true',例如,'updating_category'正在执行。但是,如上所述,如果我开始奖励许多不同类型的贡献,那么每行中会有很多列未被使用。
我不确定这是否是“真正的问题”(我已经读过它但不确定有必要避免这种情况),或者是否有更好的方法来记录每个用户参与的活动类型赚取积分。
一些当前的协会
User has_many :answers
Question.rb has_many :categories
Question.rb has_many :tags
答案 0 :(得分:1)
对于我的rails应用程序我使用的是thumps_up gem,它比active_record_reputations_system更好,它更简单。