如何递增十进制值?

时间:2014-08-19 16:26:45

标签: mysql ruby-on-rails ruby ruby-on-rails-4

user中有一列points

我想在其上增加小数值。

@user = User.find(@ok.user_id)
@user.points = @user.points + 0.8
@user.save

如果我+ 0.8取代+ 1而不是{{1}}。

我使用的是Mysql,该列是DECIMAL。

1 个答案:

答案 0 :(得分:0)

如果您希望以有效,可靠的方式增加:

User.where(id: @ok.user_id).update_all([ 'points=points+?', 0.8 ])

这可以避免竞争条件,并且不需要加载模型。这里的缺点是你加载的任何模型已经过时,需要先用reload更新,因为它们的点数已经关闭,但这并不是一件坏事。可能在后台进行了许多修改。