【发布时间】:2016-07-31 18:02:10
【问题描述】:
SQLite3::ConstraintException: UNIQUE 约束失败:users.email: INSERT INTO "users" ("name", "email", "created_at", "updated_at", "password_digest") VALUES (?, ?, ?, ?, ?)
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
用户模型 用户.rb
class User < ApplicationRecord
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[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
【问题讨论】:
-
显然您正在尝试使用现有电子邮件地址创建新记录,并且电子邮件字段具有唯一约束。这意味着该列必须具有唯一值。
-
你能展示你的用户模型吗,错误表明你违反了唯一键约束,请不要使用2个类似的电子邮件来创建对象。
标签: ruby-on-rails ruby activerecord