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

问题描述 投票:0回答:1
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 创建另一个用户,则现有用户的每个数据都会更新。我怎样才能阻止它更新用户。

ruby-on-rails ruby-on-rails-5
1个回答
1
投票

您应该在您的

validation
模型中添加唯一的电子邮件
user

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
© www.soinside.com 2019 - 2024. All rights reserved.