簡體   English   中英

如何在交付時增加Ruby on Rails 4.2中的產品數量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM