2017-12-27 7 views
-5

Also gebe ich einen Benutzernamen, eine E-Mail und ein Passwort (+ Passwortbestätigung) ein und sobald ich auf "Senden" klicke, heißt es: "Benutzername darf nicht leer sein" und ich habe eindeutig einen Benutzernamen eingegeben.Benutzername kann nicht leer sein

Hier ist meine user.rb

class User < ActiveRecord::Base 
    validates :user_name, presence: true, length: { minimum: 4, maximum: 16 

    } 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 


Das ist mein registrations_controller ist:

class RegistrationsController < Devise::RegistrationsController 

    private 

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

    def account_update_params 
    params.require(:user).permit(:email, :user_name, :password, :password_confirmation, :current_password) 
    end 
end 


Und die folgende ist mein new.html.erb

<h2>Sign up</h2> 

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= f.error_notification %> 

    <div class="form-inputs"> 
    <%= f.input :user_name %> 
    <%= f.input :email, required: true, autofocus: true %> 
    <%= f.input :password, required: true, hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length) %> 
    <%= f.input :password_confirmation, required: true %> 
    </div> 

    <div class="form-actions"> 
    <%= f.button :submit, "Sign up" %> 
    </div> 
<% end %> 

<%= render "devise/shared/links" %> 

add_username_to_us ers.rb (migration)

Wenn noch etwas benötigt wird, um mehr über den Fehler zu erfahren, bitte Kommentar. Beachten Sie auch, dass ich ein Juwel (ordnungsgemäß installiert) habe und einen Cloud 9-Editor verwende. Danke im Voraus!

+0

haben Sie Ihren Code auf github haben? – jdgray

+0

@jdgray https://ide.c9.io/kingsong/instagram – iiRosie1

+0

können Sie zeigen Sie Migrationsdatei hier? – sam

Antwort

5

Wenn Ihr Code auf c9.io Überprüfung gibt es definitiv ein Problem mit Ihrem Migrationen Datei, wo Sie diese haben:

class CreateAddUserNameToUsers < ActiveRecord::Migration 
    def change 
    create_table :add_user_name_to_users do |t| 
     t.string :user_name 

     t.timestamps null: false 
    end 
    end 
end 

, die tatsächlich eine Tabelle add_user_name_to_users genannt erstellt, die Sie in Ihrer schema.rb Datei finden. Wenn Sie also Ihr User mit dem Anmeldeformular erstellen, gibt es kein user_name, das auf der User Tabelle validiert werden soll, da es nicht existiert. Sie sollten Ihre Migrationsdatei 20171231162016_create_add_user_name_to_users.rb entfernen, da dies nicht das ist, was Sie tun möchten, oder die Tabelle löschen (here sind einige Dokumente zum Ändern Ihrer Migrationen).

Stellen Sie sicher, dass Sie die Dokumentation zu diesem Gerät befolgen, indem Sie user_name als Anmelde-/Anmeldeparameter here hinzufügen.

Sie haben auch eine models Tabelle, die die gleichen Felder wie Ihre users Tabelle hat (auch vorausgesetzt, dass dies hier aus Versehen gestellt wurde. Stellen Sie sicher, dass Sie Ihre Migrationen überprüfen, da es so aussieht, als wäre eines der Ergebnisse des Fehlers Sie sehen.

+0

So habe ich die '20171231162016_create_add_user_name_to_users gelöscht. rb'. Jetzt sollte ich die Dokumente überprüfen, um meine Migrationen zu ändern. – iiRosie1

+0

Sie können entweder tun, oder löschen Sie diese Tabelle, dann fügen Sie 'user_name' zu ​​Ihrer' user' Tabelle – jdgray

+0

ich versehentlich verknüpfen in die falsche Wolke 9. Der, den ich dir geschickt habe, gehört meiner Schwester, wir arbeiten an der gleichen Sache. https://ide.c9.io/kingsong/instagram-rose Das ist meiner. Ich bin den Unterlagen gefolgt. Ich habe die Migration generiert und migriert. – iiRosie1

Verwandte Themen