Ruby 正在尝试防止在Sinatra应用程序中创建重复的用户名
您好,我正在尝试防止重复的用户名创建,我的应用程序一直试图将我重定向到一个假设的帐户页面,并在我的erb文件中不断抛出用户名未定义错误,如果用户名已经存在,我实际上正在尝试重定向回注册页面 以下是我的用户类模型:Ruby 正在尝试防止在Sinatra应用程序中创建重复的用户名,ruby,sinatra,Ruby,Sinatra,您好,我正在尝试防止重复的用户名创建,我的应用程序一直试图将我重定向到一个假设的帐户页面,并在我的erb文件中不断抛出用户名未定义错误,如果用户名已经存在,我实际上正在尝试重定向回注册页面 以下是我的用户类模型: class User <ActiveRecord::Base include Slugifiable::InstanceMethods extend Slugifiable::ClassMethods validates_uniqueness_o
class User <ActiveRecord::Base
include Slugifiable::InstanceMethods
extend Slugifiable::ClassMethods
validates_uniqueness_of :username, case_sensitive: false <---This should validate if username exist
has_many :players
has_secure_password
end
class用户参数[:username],:email=>params[:email],:password=>
params[:password],:name=>params[:name])
会话[:user\u id]=@user.id
重定向到“/帐户”
结束
结束
结束
当我试图创建一个重复的用户名进行测试时……它会不断地将我重定向到一个帐户页面,但会抛出一个错误,即erb文件中没有定义用户名。但是,当创建一个全新的用户名时,它工作得很好。我做错了什么?“从erb引发错误”听起来好像erb文件中的某个地方有问题
User.create
在触发唯一性检查时可能会自动失败,即听起来好像它将@User.username
设置为nil
,或者@User
本身是nil
您也从未定义当验证检查失败时它应该做什么
你可以:
- 使用
以引发异常User.create
- 检查
和@user.valid?
是否有任何错误,并向用户报告@user.errors
User.create
在触发唯一性检查时可能会自动失败,即听起来好像它将@User.username
设置为nil
,或者@User
本身是nil
您也从未定义当验证检查失败时它应该做什么
你可以:
- 使用
以引发异常User.create
- 检查
和@user.valid?
是否有任何错误,并向用户报告@user.errors
post '/signup' do
if params[:username] == "" || params[:email] == "" || params[:password] == "" || params[:name] == ""
flash[:notice] = "<h3 class ='alert'>Please fill-in info!</h3>"
redirect to '/signup'
else
if @user
flash[:notice] = "<h3>Username already exist, try anoter one.</h3>"
redirect to '/signup'
else
@user = User.create(:username => params[:username], :email => params[:email], :password =>
params[:password], :name => params[:name])
session[:user_id] = @user.id
redirect to '/account'
end
end
end