如何为这样的参数使用强参数:
{
... attributes of a model,
related_model_attributes => [
RANDOM_HASH_KEY => { attr_1 => value_1, ... other attributes },
ANOTHER_RANDOM_KEY => { attr_1 => value_1, ... other attributes}
...
]
}
如果我使用正常的许可证样式,例如ff片段:
permit!(... model attributes, related_model_attributes: [{:attr_1, ..other attributes]])
它会在随机哈希键上抛出和非允许的错误。
如何将强参数与has_many一起使用?
答案 0 :(得分:1)
除了显而易见的丑陋之外,没有官方认可的方法可以做到这一点。
给出这样的哈希:
{ thing: {
thangs_attributes: {
'some_synethic_index' => {
attribute: value
},
'some_other_index' => {
attribute: value
}
}
}
这个想法基本上是允许thang_attributes
散列中的键基于它们的外观。
像这样。
def thing_params
thangs_attributes = params[:thing][:thangs_attributes].keys.each_with_object([]) do |k, memo|
memo << { k => [:id, '_destroy', :attribute] }
end
params.require(:thing).permit(thangs_attributes: thangs_attributes)
end
应该为thangs_attributes
中的每个随机索引键设置嵌套哈希值。或者,不安全地,您可以调用params.require(:thing).permit!
,这将允许任何和所有参数。