4

我正在将我的应用程序的投票和声誉系统从activerecord-reputation-system转换为Merit ,因为后者似乎有一个更活跃的核心团队。

我正在尝试为我的应用程序中的问题和答案投票建立积分规则。理想情况下,当用户对问题进行投票时,规则会将分数分配给问题本身,以及问题的创建者。

从优点的关于点规则的自述部分,我看到了这个例子:

score 15, on: 'reviews#create', to: [:reviewer, :reviewed]

我的理解是,:reviewerreviewed这个例子中是那些获得分配给他们的点。但是,当我在自己的 point_rules.rb 中尝试此操作时:

score 10, :on => 'questions#vote', :to => :question 

我收到以下错误:

[merit] NoMethodError on `Question#question` (called from Merit::TargetFinder#other_target)

我知道我在这里遗漏了一些东西,但是有人可以告诉我它是什么吗?

4

2 回答 2

3

此代码使用优点适用于我的项目。

score 10, :on => 'questions#vote'

score 10, :on => 'questions#vote', to: :user

我使用了两者,因为我不确定如何将它们结合起来。我的应用程序涉及对评论的投票,投票者对评论进行投票将获得 10 分,评论所有者也将获得 10 分。

希望这可以帮助。

于 2013-12-18T02:45:10.923 回答
3

优点是这样的:

如果您定义规则但未指定给谁,则默认情况下会将积分分配给 current_user

score 15, on: 'reviews#create' # This is for current_user

如果要将积分分配给 current_user 之外的用户,请指定它

score 10, :on => 'questions#vote', to: :user

在上面的例子中,:user指的是方法question.user,谁是问题的作者,与投票的 current_user 不同。

在 OP 的情况下,实际上 ActiveRecord Reputation 和 Merit 用于不同的目的,不能完全互换。

  1. ARP 可用于所有模型,包括用户和非用户。Meirt 仅供用户使用。

  2. Merit 有另一个徽章模块。ARP没有。

  3. Merit 有一个规则模块,您可以在其中定义所有规则,例如 CanCan。而在 ARP 中没有这样的地方。

  4. 您将主要在 ARP 中处理模型。在 Merit 中,您将同时使用 Controller 和 Model。

于 2013-12-18T03:26:16.430 回答