【发布时间】:2014-05-21 16:45:13
【问题描述】:
强参数有几个问题,但我找不到任何答案来实现我的目标。请原谅任何重复(也许指出我正确的方向)。 我在具有多个“has_one”关联和带有“accepts_attributes_for”的嵌套属性的模型中使用强参数。
在我的路线中,我有:(更新以便更好地理解)
resources :organisations do
resources :contact_details
end
所以,即对于我必须使用的一个关联模型
def organisation_params
params.require(:organisation).permit(:org_reference, :supplier_reference, :org_type, :name, :org_members, :business, :contact_person, contact_detail_attributes: [:id, :contactable_id, :contactable_type, :phone, :fax, :mail, :state, :province, :zip_code, :street, :po_box, :salutation, :title, :last_name, :first_name, :description])
end
这可行,但我必须为每个关联模型重新键入所有允许的参数。当我修改 contact_details 的允许属性时,我必须在多个位置更改它(每个具有多态关联的模型)。
有没有办法获取contact_details的参数白名单并包含到父白名单中?
类似:
def organisation_params
my_params = [:org_reference, :supplier_reference, :org_type, :name, :org_members, :business, :contact_person]
contact_params = #get permitted params, that are defined in contact_details_controller
params.require(:organisation).permit(my_params, contact_params)
end
我不想解决安全问题,但我已经为 contact_details 定义了允许的属性,并且不想在每个关联的“父”模型中重复它(因为它很累而且很容易出现愚蠢的错误,比如省略几个父模型之一中的一个属性)。
【问题讨论】:
-
“嵌套模型”是什么意思?
-
我有一个“父”模型,它接受另一个模型(“嵌套模型”)的属性。也许嵌套资源是一个更好的术语?
-
哦,好的;我认为“关联模型”或“关联记录”更好
-
好的,我把它改成关联模型,希望它能澄清场景
标签: ruby-on-rails ruby ruby-on-rails-4 strong-parameters