Я создаю небольшое приложение на Rails, и сейчас я пытаюсь аутентифицировать пользователя.
Итак, я получил этот метод в классе контроллера:
def login
if @user = User.authenticate(params[:txt_login], params[:txt_password])
session[:current_user_id] = @user.id
redirect_to root_url
end
end
Вот определение метода authenticate (внутри класса модели User):
def self.authenticate(username, password)
@user = User.where(["username = ? AND password = ?", username, password])
return @user
end
Проблема в том, что я получаю сообщение об ошибке:
undefined method `id' for #<ActiveRecord::Relation:0x92dff10>
Я подтверждаю, что пользователь, в которого я пытался войти, действительно существует в базе данных (кроме того, он пытается получить идентификатор пользователя, и эта инструкция заключена в if, если в случае 0 пользователи возвращаются из метода authenticate).
Почему я получаю это сообщение об ошибке? Зная, что когда я меняю User.where
на User.find
, все работает отлично!
Спасибо!