我的更新功能中有以下代码。我看到数据在数据库中更新了,但'ship_date_changed?'函数不返回true。
def update
@order = Order.find(params[:id])
ship_date_changed = @order.ship_date_changed?
respond_to do |format|
if @order.update(order_params)
OrderNotifier.shipped(@order).deliver if ship_date_changed
format.html { redirect_to @order, notice: "Your order has been updated" }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
答案 0 :(得分:0)
那是因为它没有改变。看看你做了什么:
@order = Order.find(params[:id])
ship_date_changed = @order.ship_date_changed?
您从数据库中获得订单并立即询问其发货日期是否已更改。不,它仍然与您从数据库中获得的记录完全相同!
您可能想要做的是略微改变操作顺序:
@order = Order.find(params[:id])
@order.attributes = order_params
ship_date_changed = @order.ship_date_changed?
respond_to do |format|
if @order.save(order_params)
OrderNotifier.shipped(@order).deliver if ship_date_changed