[英]How to increase product quantity in Ruby on Rails 4.2 on delivery
我有用於存儲產品及其數量的應用程序,已經在我擁有product_id的地方創建了控制器交付,並且也交付了價值。
因此,現在交貨后,我希望更新我的產品數量。 (從交貨值增加到當前值)
我當時想將這段代碼放到交付控制器中的create動作中,但是我不知道怎么辦?
def create
@delivery= Delivery.new(delivery_params)
respond_to do |format|
if @delivery.save
@ingredient = Ingredient.find(params[:ingredient_id])
@ingredient.update_attributes(:quantity => :quantity + :delivered)
....
但這不是那樣的。 也許在保存之前我需要找到成分? 有什么可以幫助的,謝謝
您可以嘗試以下代碼(假設已交付的數量存儲在已delivered
屬性中):
@ingredient.quantity += @delivery.delivered
@ingredient.save
如果要完全使用update_attributes
方法:
@ingredient.update_attributes(quantity: (@ingredient.quantity + @delivery.delivered))
您可以使用增量!
例如
@ingredient.quantity.increment!
或者如果您需要增加一個以上
@ingredient.quantity.increment!(amount)
作為基本說明,我建議從DelliveryController中重構成分材料。 例如,您可以在Delivery模型中執行after_save回調。
class Delivery < ActiveRecord::Base
after_save :update_ingredients
def update_ingredients
// do the update here
end
end
也許您甚至應該考慮創建一個單獨的對象來處理此問題。 請閱讀以下內容以獲取靈感: https : //blog.engineyard.com/2014/keeping-your-rails-controllers-dry-with-services
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.