0

我的更新函数中有以下代码。我看到数据库中的数据已更新,但“ship_date_changed?” 函数不返回真。

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
4

1 回答 1

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
于 2013-11-11T00:38:14.153 回答