2016-07-31 4 views
0

SQLite3 :: ConstraintException:UNIQUE制約が失敗しました:users.email:INSERT INTO "users"( "name"、 "email"、 "created_at"、 "updated_at"、 "password_digest") VALUES(?、?、?、?、?)UsersController#でActiveRecord :: RecordNotUniqueを作成

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モデル 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

明らかに、既存の電子メールアドレスで新しいレコードを作成しようとしていて、電子メールフィールドに固有の制約があります。この列には一意の値が必要です。 –

+0

あなたのユーザモデルを表示できますか?エラーはあなたが一意のキー制約に違反していることを示します。オブジェクトを作成するために2つの類似したメールを使用しないでください。 –

答えて

1

エラーは、データベースのフィールド(この場合はテーブルusers、フィールドemail)に制約があり、既に電子メールを挿入していると表示されます。移動してusersテーブルの移行を確認します。

+0

ありがとう、これは私のために働いた! –

+0

明確にするために、制約を削除するように提案していませんでした.D – Ursus

関連する問題