Stan Blog

學習過程中的一些記錄

[Rails] Nested Attributes with Strong Parameters

在有些情況我們會需要做 Nested Form,這時候就需要將 Nested Form 的 Attributes 也加到 Strong Parameters 內。

  • 以 order has_one info 為例
# order.rb
class Order < ActiveRecord::Base
  has_one :info, class_name: "OrderInfo", dependent: :destroy
end
  • 在 order model 中以 accepts_nested_attributes_for :info 指定
# order.rb
class Order < ActiveRecord::Base
  has_one :info, class_name: "OrderInfo", dependent: :destroy
  accepts_nested_attributes_for :info
end
  • 在 order controller 中的寫法,以 info_attributes 為 key,指定允許寫入的 attributes
# order_controller.rb
def order_params
  params.require(:order).permit(
    info_attributes: [
      :billing_name,
      :billing_address,
      :shipping_name,
      :shipping_address
    ]
  )
end

Comments

comments powered by Disqus