在一切之前我要感谢你的帮助
我有一个这样的模型:
attr_protected nil
belongs_to :product
belongs_to :user
before_create :add_ammount
def carted_product_price(ammount, price)
ammount * price
end
def add_ammount
carted_product = CartedProduct.where(:product_id => self.product_id, :user_id => self.user_id)
if carted_product
carted_product.first.ammount += self.ammount
carted_product.first.update_attributes(:ammount => carted_product.first.ammount)
else
self.save
end
end
它将采购订单保存在一个名为 Carted_Products 的表中,该表连接到下面的用户和产品
问题是当创建前执行我希望它更新表中的记录,如果记录已存在,则添加控制器传递的金额,如果不存在,则创建一个,就 iv 完成而言,它会更新金额,但仍然使用传递的参数创建一个新的记录按照顺序,我希望它只更新,而不是在找到记录时执行这两个操作
谢谢你的耐心
EDIT:
尝试在更新属性后返回 false,它取消过滤器,并且不创建或更新属性
Return false
in the before_create
过滤器以防止对象被保存。add_amount
不负责保存对象,并且不应调用save
通过它自己。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)