簡體   English   中英

Rails ActiveModel ::表單中的臟

[英]Rails ActiveModel::Dirty in a form

當使用rails表單來更新布爾值(在我的情況下shipped )時,我如何檢查是否已將其設置(特別是)從false設置為true,以便設置shipped_at變量?

目前,我的更新操作如下所示:

  def update
    @order = @current_shop.orders.find(params[:id])

    if @order.update_attributes(params[:order])
      redirect_to edit_admin_shop_order_path(@current_shop, @order), notice: 'Order was successfully updated.'
    else
      render action: "edit"
    end
  end

需要檢查此條件,然后應分配shipped_at (如果條件成立),然后顯然應保存該對象。

我應該使用ActiveModel :: Dirty嗎? 我的控制器動作應該如何看待當天結束?

我認為這是訂單本身的責任。

class Order < ActiveRecord::Base
  before_update :set_shipped_at

  def set_shipped_at
    if self.shipped_was == false && self.shipped == true
      self.shipped_at = Time.now
    end
  end
end

現在您不需要更改控制器中的任何內容,如果您從另一段代碼中保存訂單,則始終會設置shipped_at值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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