5

我正在使用Devise 3的候選版本,以便我可以在Rails 4中使用它。在Rails 3.2中,我曾經可以通過自定義字段添加到我的User模型中只需將該字段添加到registration/edit.html.erb和registration/new.html.erb文件(在運行正確的遷移之後)即可。然後,我只需將該字段添加到模型中的attr_accessible字段列表中即可。在Rails 4下設計3中的自定義用戶字段4

但是,在Rails 4中,沒有attr_accessible列表,我不能簡單地在視圖中添加字段。如何添加自定義用戶字段?

回答

7

我被告知要看主README on the github page and there it was。簡單。

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

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :username 
    end 
end 
0

您需要啓用色器件代替attr_accessible強參數做這件事,你需要創建新的初始化,如:

DeviseController.class_eval do 
    def resource_params 
    unless params[resource_name].blank? 
     params.require(resource_name).permit(:email, :password, :password_confirmation, :remember_me) 
    end 
    end 
end 

確保您從rails4分支(plataformatec /色器件)克隆寶石。 從模型

+0

強參數配置按照本指南的https:// github上.com/rails/strong_parameters –

9

添加

 def configure_permitted_parameters 
     devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) } 
     devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) } 
     devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) } 
    end 

刪除attr_accesible要ApplicationController中爲我工作。

+1

您可能還需要:'before_action:configure_permitted_pa​​rameters,如果:: devise_controller?' – stephenmurdoch

3

如果你想允許在您的

ApplicationController的附加參數,你可以用一個簡單的做過濾器前:

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

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :username 
    end 
end 
相關問題