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 получает exexued, то как еще что-то еще выполняется? – InQusitive