Rails升级:assign_attributes的参数数量错误(2表示1)

Fel*_*lix 0 ruby ruby-on-rails ruby-on-rails-4

嗨我已经从rails 3.2.12升级到4.0.0大多数人认为现在工作正常,但是我收到了这个错误:

在此输入图像描述

在这种情况下是什么问题?

awe*_*ndt 6

消息签名从两个参数更改为一个.比较v3.2.12V4.0.2:

assign_attributes(new_attributes, options = {}) # 3.2.12

assign_attributes(new_attributes)               # 4.0.2
Run Code Online (Sandbox Code Playgroud)

Rails 3质量分配保护已弃用,这是其中的一部分.从质量赋值中保护属性被提取到gem中.从其自述文件:

您还可以使用该:without_protection选项绕过质量分配安全性.

在版本4.x中,您不再需要该:without_protection选项,因为我们鼓励您使用强参数.

为了顺利升级,您可以将protected_attributes宝石捆绑起来.但请注意"在Rails 5.0发布之前,这个插件将得到官方支持."

此外,您不需要使用@user.send(:update_attributes, …),您可以使用@user.update_attributes(…).