gpt4 book ai didi

ruby-on-rails - "exists?"方法不起作用 - 在保存到数据库之前尝试检查用户是否存在

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:56 25 4
gpt4 key购买 nike

我是 Rails 的新手,正在尝试为我的网站创建注册表单。它工作正常,但有一个异常(exception)——它将用户保存到数据库中,而不首先检查它们是否存在。在保存之前如何检查以确保用户存在?

用户 Controller :

class UsersController < ApplicationController
def new
@user = User.new
end

def create
@user = User.new(user_params)
if @user.exists?(:username) == false && @user.save(user_params)
session[:id] = @user.id
redirect_to posts_path
else
redirect_to '/signup'
end
end

def edit

end

def update
end

def show
end

def destroy
end

private

def user_params
params.require(:user).permit(:username, :jabber_id, :password)
end
end

最佳答案

一个非常简单的验证是这样的:

# in your user.rb
validates :username, uniqueness: true

你可能想忽略大写和小写:

# in your user.rb
validates :username, uniqueness: { case_sensitive: false }

然后将您的 create 方法更改为如下所示:

def create 
@user = User.new(user_params)

if @user.save
session[:id] = @user.id
redirect_to posts_path
else
render :new
end
end

此外,我建议在数据库级别也有一个唯一索引:

# in a migration
add_index :users, :username, unique: true

关于ruby-on-rails - "exists?"方法不起作用 - 在保存到数据库之前尝试检查用户是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54010180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com