【问题标题】:how to modify the last set of attributes in a rails nested field如何修改rails嵌套字段中的最后一组属性
【发布时间】:2020-01-11 23:12:42
【问题描述】:
好的,所以在我正在制作的 rails 应用程序中,我有一个模型需要在保存到控制器之前进行调整。问题是我不希望我可能正在修改的每个嵌套属性都有这些更改,只有最后一个(新创建的就是那个)。
我尝试过使用表单标签而不是依赖表单对象(将属性索引更改为类似新的,认为我可以轻松访问它)但这不会通过强参数,因此不会当我做my_model.update(permitted_params) 时不会得救。这是因为我希望能够更新现有记录,但可以选择创建一个新记录(仅一个),其中包含一些需要调整的属性(在控制器中)。
提前谢谢...
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-6
【解决方案1】:
我不确定我对您的问题的理解是否正确,但我希望它是正确的并且对您有所帮助,但请更具体并分享相关代码以获得更好的答案。
我理解的解决方案:
您可以访问控制器中的参数并对其设置条件,例如:
def create # or update
if params[:your_model][:the_attribute] == your_condition
# You can manually edit params here before saving.
param[:your_model][:the_attribute] = your_change
end
@your_model = permitted_params
@your_model.save
end
如果你想传递一些会影响你的条件的东西,你必须在 allowed_params 动作中允许它。据我所知,没有其他办法。