【发布时间】:2014-03-17 01:02:33
【问题描述】:
在使用 Rails 4 强参数时,我正在努力寻找处理嵌套表单的正确且干燥的方法。
我有一些模型可以在我的应用程序中以不同的方式重复使用,因此我有一些嵌套表单。
问题是当我使用嵌套表单时,我不觉得我在使用 DRYest 方法。
考虑以下是AccountsController:
params.require(:account).permit(
person_attributes: [
:name,
address: [
:city
]
]
)
从我的角度来看,person_attributes 不应该设置在 AccountsController 中。
我的意思是,AccountsController 不应该对Person 类了解那么多。
我曾想过将这些允许的属性添加到 PeopleController,但它会是一个无法直接访问的私有方法。
现在我正在考虑将人员允许的属性存储在类方法Person.permitted_attributes 中,但我不确定这是否是一个明智的设计决策。
这样做我可以在几个地方使用它。
我显然会为每个控制器编写单独的测试。
我知道参数过滤应该在控制器中完成,而不是在模型中,但我不确定添加代码重复是否是一个好的权衡。
你们对此有何看法?
【问题讨论】:
标签: ruby-on-rails-4 nested-attributes strong-parameters