【发布时间】:2011-03-18 07:09:19
【问题描述】:
所以我有一个向上和向下投票按钮,可以将值为 1 或 -1 的投票插入数据库。这可以正常工作。然后,我通过汇总其投票值来显示该元素的总投票数。但是,这不能正常工作,因为投票总和显示的行为非常奇怪:
对视频的第一次投票似乎根本没有增加它。然后第二次投票。如果我从赞成票变为反对票,它会增加一次,然后下一个反对票是反对票。这很难解释,但也许你能弄清楚我的代码有什么问题。
我的视频模型中有这个功能(被投票的元素,它有_many video_votes):
def vote_sum
read_attribute(:vote_sum) || video_votes.sum(:value)
end
我的 VideoVote 模型中也有这个:
after_create :update_vote_sum
private
def update_vote_sum
video.update_attributes(:vote_sum => video.vote_sum + value)
end
我做错了什么?
【问题讨论】:
-
你试过
update_attributes!(和!)吗?有什么错误吗?update_attributes也有验证 - 验证会干扰吗?另外,你知道increment方法吗?value来自update_vote_sum哪里? -
值来自我的控制器,我将其设置为 1 或 -1。那部分工作正常。它也是我的 video_votes 表中的一列,并存储在其中。
-
update_attributes!似乎对vote_sum的行为没有任何影响 -
验证没有干扰,我还没有真正设置任何一个
-
您如何检查投票是否有效?使用 SELECT 或通过一些 Rails 对象/调用直接查询 SQL 数据库?
标签: ruby-on-rails ruby database ruby-on-rails-3