2013-05-15 57 views
2

我已經升級到Rails 4,並走過了strong_parameters路線。問題是,它拋出下面的錯誤指着我使用設計的客戶註冊控制器: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' 

6號線build_resourcecreate方法和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

設計是剛發佈的新的RC寶石是使用Rails 4

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

其他選項兼容,可以使用設計大師github回購的'rails4'分支。

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

當然,不要忘記Gemfile更新後的'bundle install'。

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