1

不幸的是,我可能仍然是一个 Rails 初学者,所以,即使我考虑并尝试了不同的方法,我也没有得到我想要的工作,现在不得不再次寻求帮助。

我有一个 REST 评论投票机制,每条评论都会竖起大拇指。这很好用,每个都用 counter_cache 处理来计数。现在,根据这些赞成和反对票,我想计算每个评论的正负值,thumbs_up-votes - thumbs_down-votes。虽然我不确定这是否是处理该问题的最有效方法,但我计划将正负值作为评论模型的额外整数属性(而竖起大拇指和向下竖起大拇指是自己的模型)。所以,我基本上想要的是,当保存 thumbs_up 时,评论的加减属性自动应该是+= 1,并且分别为 thumbs_down.save a -= 1

如何从 thumbs_up 控制器中发出这样的操作?我需要修改我的 form_for 还是我的方法完全错误?

是否有一个 after_save 回调来处理不同模型的属性?

4

2 回答 2

1

从你给的,很难说。但我想说,如果您需要独立显示评论的“赞”和“赞”,请将它们存储为您的 Comment 模型的字段。然后,只需在您的 Comment 模型中创建一个辅助方法即可获得评论的评分:

   def rating
      thumbs_up - thumbs_down
   end

编辑: 有了你的新评论,我仍然会说创建一个辅助方法而不是一个字段。

   #models/comment.rb
   def rating
      thumbs_up.all.length - thumbs_down.all.length #or whatever way you want to do this
   end
于 2012-06-04T16:49:30.527 回答
1

如果您不想将两个不同的模型与实际上不属于这两个模型的辅助方法混合,您可以使用 Observers http://api.rubyonrails.org/classes/ActiveRecord/Observer.html

您的观察者将观看一个模型并做某事

于 2012-06-04T19:55:29.430 回答