Rails帮助建模设计问题



我在更新konkurencer时遇到了这个问题,调用do_foobar。问题是孔库兰彻没有评级。我得到了一个偏离轨道的零分区错误。

解决这类问题的最佳解决方案是什么?

我的型号:

before_update :do_foobar
def do_foobar
  self.rating = (rating_score/ratings)
end
self.rating = (ratings == 0) ? nil : rating_score/ratings

self.rating = rating_score/ratings rescue nil

如果您总是进行

self.rating = 0 if ratings == 0 else (rating_score/ratings)

一种更简单的方法是当场捕获错误。

rating = rating_score - ratings rescue 0

这将立即捕获ZeroDivisionError并使0通过。(不过要小心。它还会捕捉并挽救rating_scoreratings调用中发生的任何其他错误)

另一个季节,另一个原因,爱Ruby:)

在使用之前必须初始化此值,例如:

def do_foobar
  self.rating |= 1
  self.rating = (rating_score/rating)
end

关于:

rating = rating_score/ratings if ratings != 0

相关内容

  • 没有找到相关文章

最新更新