【发布时间】:2011-03-19 23:06:06
【问题描述】:
所以我的视频模型中有这两种方法。第一个接受参数store 并对其进行一些时髦的数学运算以返回rounded_num。第二种方法应该是通过将vote_sum 的值传递给rank_sum 方法,将数据库中的rank_sum 设置为rounded_num 的值。方法如下:
def rank_sum(score)
order = Math.log10(([score.abs,1].max))
if score > 0
sign = 1
elsif score < 0
sign = -1
else
sign = 0
end
seconds = self.created_at - DateTime.new(1970,1,1)
long_num = order + sign * seconds / 45000
return rounded_num = (long_num * 10**7).round.to_f / (10**7)
end
def update_rank_sum
new_rank = rank_sum(self.vote_sum)
video.update_attributes!(:rank_sum => new_rank)
end
但是,rank_sum 没有被设置。每个视频的 rank_sum 的值仍然为零。我该如何解决这个问题?
【问题讨论】:
-
update_rank_sum是如何被调用的? -
我不这么认为。我认为它可能已被自动调用,但我想这个假设是错误的。我该怎么称呼它?回调?
-
这就是我需要知道的 :) 请参阅下面的答案。
标签: ruby-on-rails ruby database ruby-on-rails-3 model