【问题标题】:Increment count by 0.5?将计数增加 0.5?
【发布时间】:2013-01-24 16:02:18
【问题描述】:
我知道 ActiveRecord 的 increment_counter...但我需要增加 0.5 而不是 1。
类似:User.increment_counter(:credits_count, RECORD_ID, 0.5)
是否有某种帮助/方法可以轻松地增加0.5?还是我必须提取记录,获取当前计数,然后将0.5 添加到该计数并保存?
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
rails-activerecord
【解决方案1】:
你可以使用.increment
所以基本上是User.find(RECORD_ID).increment(:credits_count, 0.5)
Api Doc Increment
【解决方案2】:
如果您不希望对象的所有加载使其更快,请使用 update_all
def self.increment_float(user_id,counter,value)
User.update_all("#{counter} = #{counter} + #{value}",{:id => user_id})
end
要小心,因为 update_all 会更新与 where 条件匹配的所有内容(在本例中为 id == user_id),也许您需要先做一些测试才能确定