试图重构我的ruby代码

时间:2016-01-05 14:53:51

标签: ruby-on-rails ruby

我的分数属性从 30分开始,并希望扣除1分符合其符合的某些条件。以下是我如何写它的方式:

case
when user.growth_rate >= 0.1 && user.growth_rate <= 0.11
user.update(score: 29) if user.score != 29
when user.growth_rate >= 0.11 && user.growth_rate <= 0.12
user.update(score: 28) if user.score != 28
end

然后列表继续,是否有更好的方法/方法来做这样的逻辑?

1 个答案:

答案 0 :(得分:0)

可以从score计算growth_rate

score = (30.0 - (user.growth_rate * 10)).floor
user.update(score: score) if user.score != score