2017-06-16 2 views
1

Also möchte ich meinem Devise-Modell User einige neue Felder hinzufügen. Als ich mit Rails 3 Habe ich nur noch neue Felder zu modellieren und hinzugefügt, diese FelderFügen Sie dem Devise-Modell neue Felder hinzu. Rails 5

attr_accessible :name, :etc 

Model.rb und dann änderte ich Registrierung Ansicht. Jetzt habe ich das gleiche getan, aber ich habe Entwickeln/User-Controller nicht, damit ich nicht so etwas wie dieses

def user_params 
     params.require(:users).permit(:name) 
end 

Oder

attr_accessible :name, :etc 

Antwort

3

Anpassen der RegistrationsController

class RegistrationsController < Devise::RegistrationsController 

    private 

    def sign_up_params 
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation) 
    end 

    def account_update_params 
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password) 
    end 
end 
tun können

Nun müssen wir Devise mitteilen, dass er unseren Registrierungs-Controller verwenden soll - wir können dies in unserer Datei config/routes.rb tun.

devise_for :users, :controllers => { registrations: 'registrations' } 
+0

Dies ist eine großartige Antwort. aus meiner Lektüre der Post es wie OP schien auch nicht die Migration tat. Nicht sicher, obwohl ... –

+0

Befehl zum Ausführen von Migrationen: 'Rake db: migrieren' – puneet18

+0

Ich bin neu bei der Verwendung von Devise und wollte mich ändern er Tisch. Ich habe diese Lösung gerade erfolgreich implementiert. –

0

Es gibt drei Teile dazu:

  1. die Migration auf die Tabelle generieren die Felder in Ihrer Datenbank-Schema hinzuzufügen.

rails generate migration add_name_to_users name:string

  1. Sie müssen die Fähigkeit hinzuzufügen, für die Benutzer den Namen in der Registrierung bearbeiten/Formulare hinzufügen/bearbeiten. (Das scheint es, wie Sie bereits in Ihrem ersten Codebeispiel getan haben)

  2. Sie müssen die starken params hinzuzufügen, die Sie zu Ihrem Controller hinzugefügt (die Sie bereits in Ihrem zweiten Codebeispiel getan haben.

Grundsätzlich scheint es, wie Sie die Migration nicht generiert haben. sind Sie Fehlermeldungen bekommen?

Verwandte Themen