5

Ich verwende den Release-Kandidaten von Devise 3, so dass ich es mit Rails 4 verwenden kann. In Rails 3.2 war ich in der Lage, ein benutzerdefiniertes Feld zu meinem User Modell hinzuzufügen Fügen Sie dieses Feld einfach zu den Dateien registration/edit.html.erb und registration/new.html.erb hinzu (nachdem die korrekte Migration ausgeführt wurde). Dann würde ich dieses Feld nur zu der attr_accessible Liste von Feldern im Modell hinzufügen.Benutzerdefinierte Benutzerfelder in Devise 3 unter Rails 4

In Rails 4 gibt es jedoch keine attr_accessible Liste und ich kann nicht einfach Felder in den Ansichten hinzufügen. Wie füge ich benutzerdefinierte Benutzerfelder hinzu?

Antwort

7

wurde mir gesagt, in der Haupt README on the github page and there it was zu suchen. Einfach.

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

Sie müssen sich für devise statt attr_accessible Starke Parameter ermöglichen, dafür, dass Sie neue initializer erstellen müssen wie:

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 

Vergewissern Sie sich, dass Sie Juwel von rails4 Zweig (plataformatec/devise) kloniert . entfernen attr_accesible von Modell

+0

für starke Parameterkonfiguration folgen Sie diesem Leitfaden 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 

Hinzufügen für mich gearbeitet Application.

+1

Sie könnten auch benötigen: 'before_action: configure_permitted_parameters, wenn:: devise_controller?' – stephenmurdoch

3

Falls Sie zusätzliche Parameter erlauben Sie mit einem einfachen, bevor der Filter in Ihrem

Application tun können:

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 
Verwandte Themen