2013-05-15 1 views
2

Я обновился до Rails 4 и прошел маршрут strong_parameters. Проблема заключается в том, что он бросает следующее сообщение об ошибке, указывающее на контроллер регистраций клиентов я использую для Devise:strong_parameters gem и настраиваемые маршруты маршрутизации в Rails 4

ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError): 
    app/controllers/users/registrations_controller.rb:89:in `build_resource' 
    app/controllers/users/registrations_controller.rb:6:in `create' 

Line 6 build_resource вызывается из метода create и build_resource шток стандарт:

def build_resource(hash=nil) 
    hash ||= resource_params || {} 
    self.resource = resource_class.new_with_session(hash, session) 
end 

Модель, с которой она имеет дело, - User. Я попытался подход Райана Бейтса создания разрешенного класса Params:

class PermittedParams < Struct.new(:params, :current_user) 

    def user 
     params.require(:user).permit(*user_attributes) 
    end 

    def user_attributes 
     [:name, :username, :provider, :email, :remember_me, 
     :rememberable_token, :password, :password_confirmation] 
    end 

Я не знаю, как справиться с этим в контроллере регистраций.

ответ

3

Разрабатывают просто выпустила новый гс драгоценный камень, который совместим с Rails 4.

gem 'devise', '~> 3.0.0.rc' 

Другой вариант, вам может использовать ветку «rails4» из devus master github repo.

gem 'devise', github: 'plataformatec/devise', branch: 'rails4' 

И, конечно же, не забудьте «установить комплект» после обновления Gemfile.

1

я узнал, что у вас есть, чтобы добавить это к контроллеру регистрации:

class Users::RegistrationsController < Devise::RegistrationsController 
    def resource_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation) # And whatever other params you need 
    end 
    private :resource_params 
end