繁体   English   中英

更新ActiveRecord中的当前值(Rails)

[英]Updating current value in ActiveRecord (Rails)

在我的应用程序中,Rails已经预装了许多对象。

现在,我想更新其中一些对象属性。 不幸的是,其中一些对象与数据库中的同一对象有关。 当我向myObject.balance添加一个值( myObject.balance += value )时, differentButSameObject中的属性balance仍然具有相同的值。

一种解决方案是重新加载对象。 我更喜欢这样更新值: UPDATE myTable SET balance = balance + 10 WHERE id = 1

这可能吗?

您可以使用ActiveRecords update_all语句:

Object.where(:id => 1).update_all("balance = balance + 1")

您可以将以下代码添加到模型中。 它使用update_counters执行正确的查询(例如,执行COALESCE):


def inc(counter, by = 1)
  raise "Cannot update column of a non-persisted model" unless persisted?
  self.class.update_counters(id, counter => by)
  increment(counter, by)
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM