当我想用现有邮件创建用户时,为什么会发生更新(正在使用模型验证验证:电子邮件,唯一性:true)


def create
    user = User.create(user_params)
    if user.save
      flash[:notice] = '#{params[:user][:role]} created successfully'
      redirect_to users_path(role: params[:role])
    else
      flash[:errors] = "#{user.errors.full_messages.join(', ')}"
      redirect_to new_user_path
    end
end

这是我在用户控制器中的create方法,并且正在使用invitation gem文件发送邀请。如果我使用相同的邮件ID来创建另一个用户,则更新了对现有用户的每个数据。我如何阻止此更新用户。

您应该在user模型中添加唯一电子邮件validation

validates :email, uniqueness: true

另外,像这样重构您的代码:

def create
    user = User.new(user_params)
    if user.save
      flash[:notice] = '#{params[:user][:role]} created successfully'
      redirect_to users_path(role: params[:role])
    else
      flash[:errors] = "#{user.errors.full_messages.join(', ')}"
      redirect_to new_user_path
    end
end

最新更新