Ruby on rails 4 使用Rails 4强参数处理嵌套表单的干式方法
在使用Rails 4强参数时,我一直在努力寻找处理嵌套表单的正确而干燥的方法 我有一些模型,可以在我的应用程序中以不同的方式重新利用,因此我有一些嵌套表单 问题是,当我使用嵌套表单时,我不觉得我在使用最干燥的方法 请考虑Ruby on rails 4 使用Rails 4强参数处理嵌套表单的干式方法,ruby-on-rails-4,nested-attributes,strong-parameters,Ruby On Rails 4,Nested Attributes,Strong Parameters,在使用Rails 4强参数时,我一直在努力寻找处理嵌套表单的正确而干燥的方法 我有一些模型,可以在我的应用程序中以不同的方式重新利用,因此我有一些嵌套表单 问题是,当我使用嵌套表单时,我不觉得我在使用最干燥的方法 请考虑AccountsController中的以下内容: params.require(:account).permit( person_attributes: [ :name, address: [ :city ] ] ) 从我的角度来看
AccountsController中的以下内容:
params.require(:account).permit(
person_attributes: [
:name,
address: [
:city
]
]
)
从我的角度来看,person\u属性不应该在accountscocontroller
中设置。
我的意思是,AccountsController不应该对Person
类了解那么多
我曾想过向PeopleController
添加这样的允许属性,但这将是一个无法直接访问的私有方法
现在我正在考虑将person的允许属性存储在类方法person.allowed_attributes中,但我不确定这是否是一个明智的设计决策。
这样我就可以在几个地方使用它。
显然,我会为每个控制器编写单独的测试
我理解参数过滤应该在控制器中完成,而不是在模型中,但我不确定添加代码复制是否是一个好的折衷方案
你们对此有何看法?我认为你们做得对。这是明确地做了这样的方式在美国。顺便说一下,AccountController中与人员相关的允许参数不必与PeopleController中的参数相同
也可以对嵌套参数使用“允许”,例如:
此声明列出了姓名、电子邮件和好友属性。
预计电子邮件将是一个允许的标量数组
值,并且朋友将是具有特定
属性:它们应该具有名称属性(任何允许的标量)
允许值),作为允许标量数组的属性
值和限制为具有名称的族属性
(此处也允许任何允许的标量值)
params.permit(:name, { emails: [] },
friends: [ :name,
{ family: [ :name ], hobbies: [] }])