Я на железной дороге, просто практикую некоторые рельсы и наткнулся на то, что я пытаюсь понять.
Я не понял, что делал "я" в методе аутентификации. Поэтому я удалил его и проверил логин моего приложения, чтобы увидеть, будет ли оно отображать ошибку, и оно показало:
error:
**NoMethodError in SessionsController#create
undefined method `authenticate' for #<Class:0x00000102cb9000**>
Я был бы очень признателен, если бы кто-то мог точно объяснить, что делает это «Я». Я пытался выяснить, что именно происходит, но не могу понять, как это происходит.
Метод определен в модели и вызван в session_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