如何使用强参数进行更新



我想做什么

我的应用程序有Order模型和List模型。List模型是Order的子模型。

Order具有total
List具有pricequantity列。

我想通过将每行lists的小计相加来更新Ordertotal

我做了什么

这是我的订单控制器。

def update
@order = Order.find(params[:id])
@order.total = @order.total_price
if @order.update(order_params)
redirect_to orders_path, notice: 'The order has been updated.'
else
render :edit
end
end

这是我的订单。rb(型号(

def total_price
lists.to_a.sum { |list| list.subtotal }
end

为了更新总价,我将@order.total_price设置为@order.total。但正如您所看到的,它更新了强参数(order_params(
我无法解决如何使用总价进行更新。

我该怎么办?

环境

  • 摩擦27.2
  • 轨道6

有很多方法可以做到这一点。

# One is just to do it on separate lines.
@order.update(total: @order.total_price)
@order.update(order_params)
# Merge with order_params
@order.update(order_params.merge(total: @order.total_price))

最后,Rails最常用的方法可能是在模型上使用before_save

# Order.rb
before_save do
total = lists.to_a.sum { |list| list.subtotal }
end
# orders_controller.rb
# just to
@order.update(order_params)

相关内容

  • 没有找到相关文章

最新更新