【发布时间】:2012-06-17 04:43:52
【问题描述】:
我有一个 Rails 模型,我想通过计算该属性的当前值加上我作为参数发送的值来更新属性。以下将更新记录并覆盖属性的现有值
def self.mark_receipt(qty_received,client_id,product_code)
Product.where(:client_id => client_id, :product_code => product_code)
.update_all(:qty_on_hand => :qty_received,
:qty_received => qty_received)
end
我想要更像这样的东西,但是下面的语法不起作用。
def self.mark_receipt(qty_received,client_id,product_code)
Product.where(:client_id => client_id, :product_code => product_code)
.update_all(:qty_on_hand => :qty_on_hand + qty_received,
:qty_received => :qty_received + qty_received)
end
编辑
与下面的答案非常接近,但这是 sql 在后台运行的内容
Product Load (0.5ms) SELECT `products`.* FROM `products`
WHERE `products`.`client_id` = 1 AND `products`.`product_code` = '88-89c'
SQL (0.6ms) UPDATE `products`
SET `qty_on_hand` = 165, `qty_received` = 165
而不是
UPDATE `products`
SET `qty_on_hand` = 165, `qty_received` = 165
WHERE `products`.`client_id` = 1 AND `products`.`product_code` = '88-89c'
【问题讨论】:
标签: ruby-on-rails ruby activerecord ruby-on-rails-3.2