[英]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.