ruby-on-rails - 设计:不允许的参数

标签 ruby-on-rails ruby devise

我不知道为什么,但下面的代码就停止工作了(我什至没有注意到它是怎么发生的)

routes.rb

devise_for :users, components: {registrations: 'registrations', sessions: 'sessions'}

registations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  before_filter :configure_permitted_parameters

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:name, :surname, :username, :email, :avatar)
    devise_parameter_sanitizer.for(:account_update).push(:name, :surname, :email, :avatar)
  end

end

正如我所说,之前一切正常,但现在我得到:

Processing by Devise::RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"lvuPOmTRqv6XUQ/O1g4Q9VNvzD7DgGCHocY/OlAvKHEIvWAHvlS982hxSZZzzAESCpmL5QTUcTLw/c9ME/sUFQ==", "user"=>{"name"=>"John", "surname"=>"Doe", "username"=>"foobar", "email"=>"foobar@example.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"}
Unpermitted parameters: name, surname, email

配置:

  • rails 4.2.5
  • 设计 3.5.6

P.S.:现在我终于明白为什么我应该用单元测试覆盖我的代码并使用 Travis CI

最佳答案

自 4.1 以来,for 方法已被弃用。改用这个:

class ApplicationController < ActionController::Base    
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    attributes = [:name, :surname,:username, :email, :avatar]
    devise_parameter_sanitizer.permit(:sign_up, keys: attributes)
    devise_parameter_sanitizer.permit(:account_update, keys: attributes)
  end
end

关于ruby-on-rails - 设计:不允许的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668465/

相关文章:

ruby-on-rails - 升级到 Ruby 1.9.3 和 rails 3.2 后的编码和 utf-8 异常

ruby-on-rails - Rails 4 + 设计单独的用户 CRUD

ruby-on-rails - rails : How do I login a Devise user in an integration test?

ruby-on-rails-3 - 设计:如何访问我所有 Controller 中的辅助方法

ruby-on-rails - 如何在 Rails 中联合多角色、多组织表

ruby-on-rails - 如何识别 Rails 或首选 Ruby Gem 中的唯一客户端?

ruby-on-rails - 打包 Rails 2.3 模型

ruby - 如何在 Ruby 中创建这个小型 DSL?

ruby-on-rails - 在 rails db 中存储星期几(星期一、星期二、星期三、...)并与今天的日期进行比较

ruby-on-rails - heroku上的自定义时钟进程