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