Rails ::在嵌套模型表单中,更新belongs_to“parent”属性

时间:2016-07-13 10:38:27

标签: ruby-on-rails nested simple-form belongs-to

我正在构建一个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

我的项目

  • Ruby On Rails 4.2.6 / Ruby 2.2.2
  • 设计3.5.9
  • 简单形式3.1.0

2 个答案:

答案 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_paramsorder_params是使用强参数将表格发送的白名单列入白名单的方法。

显然,我还没有对代码进行测试,但是应该给你一些方向。

希望有所帮助!