Rails Active Record:更新语句中的SQL表达式

时间:2015-08-08 20:02:22

标签: sql ruby-on-rails

如何使用AR执行以下SQL语句:

UPDATE accounts SET balance = balance + 100 WHERE id = 1

我试图找到在AR更新语句中执行SQL表达式的方法,但没有任何工作。我可以做类似

的事情
account.update balance: account.balance + 100

因为这会打开各种竞争条件问题。 DBMS是处理此类更新的适当实体。

知道如何使用AR编写它吗?

我意识到这可以通过以下方式完成:

Account.where(id: 1).update_all("balance = balance + 100")

但这对我来说非常像 un-rails 。我希望有一个更清洁的解决方案

1 个答案:

答案 0 :(得分:1)

你需要这样做:

account.increment :balance, 100

increment是文档。