Я езжу по железной дороге, просто тренируюсь на рельсах, и наткнулся на кое-что, что пытаюсь понять.
Я не понял, что делает «я» в методе аутентификации. Поэтому я удалил его и протестировал логин своего приложения, чтобы увидеть, будет ли оно показывать ошибку, и оно действительно появилось:
error:
**NoMethodError in SessionsController#create
undefined method `authenticate' for #<Class:0x00000102cb9000**>
Я был бы очень признателен, если бы кто-нибудь мог объяснить, что именно делает это «Я». Я пытался понять, что именно происходит, но никак не мог осмыслить это.
Метод определен в модели и вызывается в sessions_controller .. Я постоянно удаляю свое приложение и начинаю с нуля, чтобы освоить его, и многие вещи имеют для меня смысл каждый раз, когда я начинаю заново, но Я застрял на «я».
Я просто тот человек, которому нравится понимать, почему что-то работает.
контроллер:
def create
user = User.authenticate(params[:email], params[:password])
if user
session[:user_id] = user.id
redirect_to root_path, :notice => "Logged In"
else
flash.now.alert = "Invalid credentials"
render "new"
end
end
модель:
def self.authenticate(email, password)
user = find_by_email(email)
if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
user
else
nil
end
end