Ruby on rails 更新ActiveRecord(Rails)中的当前值
在我的应用程序中,Rails已经预加载了很多对象 现在我想更新一些对象属性。不幸的是,其中一些对象与我的数据库中的同一个对象相关。当我向myObject.balance(Ruby on rails 更新ActiveRecord(Rails)中的当前值,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在我的应用程序中,Rails已经预加载了很多对象 现在我想更新一些对象属性。不幸的是,其中一些对象与我的数据库中的同一个对象相关。当我向myObject.balance(myObject.balance+=value)添加值时,differentButSameObject中的属性balance仍然具有相同的值 一种解决方案可能是重新加载对象。我更愿意像这样更新值: 更新myTable SET balance=balance+10,其中id=1 这可能吗?您可以使用ActiveRecords up
myObject.balance+=value
)添加值时,differentButSameObject中的属性balance仍然具有相同的值
一种解决方案可能是重新加载对象。我更愿意像这样更新值:
更新myTable SET balance=balance+10,其中id=1
这可能吗?您可以使用ActiveRecords update\u all语句:
Object.where(:id => 1).update_all("balance = balance + 1")
可以将以下代码添加到模型中。它使用update_计数器执行适当的查询(例如,合并):
非常感谢。我使用Rails 2.3.8,因此我的命令现在是
Object.update_all([“balance=balance+?”,value],:id=>id)
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