我们正在从Rails 4.2.2升级到Rails 5.1.0的过程中,我们注意到.except!()
不再是Parameters的方法。有.except()
没有爆炸声,但这在我们所有情况下都不起作用。在下面的示例中,survey_params
的类型为Parameter
。
@survey.update(survey_params.except!(:user_roles)) # Rails 4.2.2
我附带的两个解决方案是:
制作一个抛出变量,以接受未敲打的.except()
的结果,如下所示:
clean_params = survey_params.except(:user_roles)
然后像这样在更新中使用它:
@survey.update(clean_params)
使用.to_h
将其转换为似乎仍然有.except!
@survey.update(survey_params.to_h.except!(:user_roles))
这两种方法都可以,但是我想知道一种解决方案是否比另一种更好?因为两者都感觉像是创可贴。