1

从 Ruby 1.9.3 上的 Rails 3.2.13 升级到 Rails 4.0.0。

设计 3.0.0.rc 不会批量分配。我遵循了我发现的所有建议,从这里描述的两种方法开始:https ://github.com/plataformatec/devise#strong-parameters 。

登录/注销有效,但注册无效:

Started POST "/users" for 127.0.0.1 at 2013-07-03 21:01:47 -0500
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", 
"authenticity_token"=>"5QPwkbXULEsF5nCiMMK7zd04baZ5kOecgqV2BdRnSEc=", 
"user"=>{"first_name"=>"test", "last_name"=>"testor", "email"=>"asdhd@gmail.com",
"username"=>"testy", "password"=>"[FILTERED]", 
"password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"}
WARNING: Can't mass-assign protected attributes for User: email, password, 
password_confirmation, first_name, last_name, username

这是设计的问题吗?有人有解决方案吗?

谢谢!

4

2 回答 2

2

问题是我在 railscasts http://railscasts.com/episodes/415-upgrading-to-rails-4之后使用的 gem 'protected_attributes' :

...
# add these gems to help with the transition:
gem 'protected_attributes'
...

我没有想到 gem 会阻碍 Rails 4 方法,如 params.require(:incoming_model).permit( .... )。我可能误会了。

取出宝石可以解决问题。这里提到的第一种方法(懒惰的方式)有效:https ://github.com/plataformatec/devise#strong-parameters 。

于 2013-07-04T04:34:44.320 回答
0

在application.rb中将config.active_record.whitelist_attributes设置为 false 。

包括 ActiveModel::ForbiddenAttributesProtection添加到您的模型中

看看:http ://blog.remarkablelabs.com/2012/12/strong-parameters-rails-4-countdown-to-2013

于 2013-07-04T02:08:47.510 回答