[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