2015-08-08 81 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'是要走的路。 –