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