2016-07-31 11 views
0

SQLite3 :: ConstraintException: UNIQUE Constraint fehlgeschlagen: users.email: INSERT INTO "Benutzer" ("Name", "E-Mail", "erstellt", "aktualisiert", "password_digest") VALUES (?,?,?,?,?)ActiveRecord :: RecordNotUnique in UsersController # erstellen

def create 
@user = User.new(user_params) 
if @user.save #red line here 

else 
    render 'new' 

users_controller.rb

class UsersController < ApplicationController 
    def show 
@user = User.find(params[:id]) 
    end 
    def new 
@user = User.new 
    end 
    def create 
@user = User.new(user_params) 
if @user.save 
    # Handle a successful save. 
else 
    render 'new' 
end 
end 
    private 

    def user_params 
    params.require(:user).permit(:name, :email, :password, 
           :password_confirmation) 
    end 
end 

User-Modell user.rb

class User < ApplicationRecord 
    before_save { self.email = email.downcase } 
    validates :name, presence: true, length: { maximum: 50 } 
    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :email, presence: true, length: { maximum: 255 }, 
      format: { with: VALID_EMAIL_REGEX } 
    has_secure_password 
    validates :password, presence: true, length: { minimum: 6 } 
end 
enter code here 
+0

Anscheinend versuchen Sie, einen neuen Datensatz mit einer vorhandenen E-Mail-Adresse zu erstellen, und das E-Mail-Feld hat eine eindeutige Einschränkung. Dies bedeutet, dass diese Spalte eindeutige Werte haben muss. –

+0

Können Sie Ihr Benutzermodell zeigen, der Fehler zeigt an, dass Sie gegen eindeutige Schlüsseleinschränkungen verstoßen haben, verwenden Sie bitte nicht 2 ähnliche E-Mails zum Erstellen eines Objekts. –

Antwort

1

Der Fehler besagt, dass Sie eine Einschränkung für ein Feld in der Datenbank haben, in diesem Fall Tabellen users, Feld email, und Sie fügen eine bereits vorhandene E-Mail ein. Öffnen Sie die Migration für die Benutzertabelle.

+0

Vielen Dank, das hat für mich funktioniert! –

+0

Nur um klar zu sein, ich habe nicht vorgeschlagen, dass Sie die Einschränkung entfernen: D – Ursus

Verwandte Themen