users_controller.rb
class UsersController < ApplicationController
include UsersHelper
def new
@user = User.new
end
def create
if isUsernameTaken?
render 'new'
elsif isEmailTaken?
render 'new'
else
@user = User.new(user_params)
if @user.save
else
render 'new'
end
end
end
private
def user_params
params.require(:user).permit(:username,:email,:password,:password_confirmation)
end
end
users_helper.rb
module UsersHelper
def isUsernameTaken?
!(User.find_by(username: params[:username]).nil?)
end
def isEmailTaken?
!(User.find_by(email: params[:email]).nil?)
end
end
问题是isUsernameTaken?
或isEmailTaken?
永远不会被执行,总是即使我再次给相同的用户名的else
部分被执行。这是为什么发生?辅助功能不工作
它被执行,否则您将收到noMethod错误。它只是按照你所说的去做,而不是你想要的。 :) – BroiSatse
不相关,但你的发现可能会更好地表示为'User.find_by_username(params [:username])。present?'等 –
@BroiSatse:如果if或elsif得到执行怎么也得到执行? – InQusitive