我正在构建一个Rails应用程序,我面临的问题是我无法解决的问题。
我有order
模型,其属于customer
所以当我构建表单时,我会@order = @customer.orders.build
这适用于保存订单属性,但我也想更新客户属性,这些属性永远不会起作用。
如何在同一过程中保存订单并更新“父”客户属性?
感谢您的帮助!
编辑:
客户模式:
class Customer < ActiveRecord::Base
has_many :orders
end
订单型号:
class Order < ActiveRecord::Base
belongs_to :customer
accepts_nested_attributes_for :customer
end
我的项目:
答案 0 :(得分:1)
您应该在create方法中更新您的客户。怎么样:
def create
@order = current_customer.orders.build order_params
if @order.save
@order.customer.update_attributes(order_params[:customer_attributes])
...
else
...
end
end
答案 1 :(得分:0)
在您的更新操作中,您可以执行以下操作:
def update
@customer = Customer.find(params[:id])
if @customer.update_attributes(customer_params.merge({ order_attributes: order_params}))
render @customer
end
end
customer_params
和order_params
是使用强参数将表格发送的白名单列入白名单的方法。
显然,我还没有对代码进行测试,但是应该给你一些方向。
希望有所帮助!