嗨我已经从rails 3.2.12升级到4.0.0大多数人认为现在工作正常,但我收到了这个错误:
在这种情况下是什么问题?
答案 0 :(得分:6)
消息签名从两个参数更改为一个。比较v3.2.12和v4.0.2:
assign_attributes(new_attributes, options = {}) # 3.2.12
assign_attributes(new_attributes) # 4.0.2
Rails 3质量分配保护已弃用,这是其中的一部分。保护质量分配的属性为extracted into a gem。从其自述文件:
您还可以使用
:without_protection
选项绕过质量分配安全性。
在版本4.x中,您不再需要:without_protection
选项,因为您已经encouraged to use Strong Parameters。
为了顺利升级,您可以捆绑protected_attributes
gem。但请注意,"此插件将在Rails 5.0发布之前得到官方支持。"
此外,您不需要使用@user.send(:update_attributes, …)
,您只需使用@user.update_attributes(…)
。