将“1.00”添加到所有现有的十进制记录

时间:2015-10-26 16:33:11

标签: ruby-on-rails ruby

如何为所有产品将价格(十进制)提高1.00?

产品记录:

#<Product id: 87, name: "Product 1", price: #<BigDecimal:7f99954c11a8,'0.5E1',9(18)>, created_at: "2015-09-15 22:09:59", updated_at: "2015-09-15 22:09:59">

尝试:

Product.update_all( price = price + 1.00 )

问题是price没有为该特定产品定义。

2 个答案:

答案 0 :(得分:2)

我认为直截了当的解决方案可以起作用

Product.update_all("price = price + 1.00")

答案 1 :(得分:2)

使用increment!方法。

  

包装增量保存记录。此方法与非爆炸版本的不同之处在于它通过属性设置器。保存不受验证检查。如果可以保存记录,则返回true。

Product.increment!(:price, 1.00)