2015-08-08 71 views
0

你怎么能执行使用AR以下SQL语句:Rails的活动记录: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") 

但是这看起来很非轨道喜欢我。我希望有一个清洁的解决方案

回答

1

你需要做的:

account.increment :balance, 100 

increment是文档。

+0

谢谢,但如果我想要做一些像'''balance = old_balance + amount'''的东西呢? (“old_balance”和“amount”都是表中的字段) – Faisal

+0

@Faisal humm ..要使用AR来满足评论,'#update_all'是要走的路。 –