我无法让脏模块工作。
我的方法在控制器中启动,在调用更新操作之前,我想查看模型是否已更改。像这样:
def update
respond_to do |format|
#If the zipcode changes on an update - reset shipping options
if @order_preview.zip_different?
if @order_preview.update(order_preview_params)
#Do Something
...
end
#if the zipcode doesn't change on update - assume only cart contents were altered
else
if @order_preview.update(order_preview_params)
#Do something else
...
end
end
end
zip_different模型如下所示:
def zip_different?
self.zip_changed?
end
看起来很直接,但每次都会返回false。 我是否必须在我想到的@order_preview.update(order_preview_params)
之后进行检查,否则持久性将会丢失。
答案 0 :(得分:4)
在检查脏状态之前,您需要从参数设置模型属性:
@order_preview.attributes = order_preview_params
if @order_preview.zip_changed?
...
else
...
if @order_preview.save
...
else
...