繁体   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