ROR Devise: разрешение имени пользователя или адреса электронной почты: неопределенная локальная переменная - PullRequest
0 голосов
/ 20 февраля 2011

Я следую учебному пособию на странице Devise Github здесь: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign_in-using-their-username-or-email-address

Я нахожусь во второй части руководства, где мы разрешаем пользователям восстанавливать свой пароль, используя свое имя пользователя или адрес электронной почты, и есть большой блок кода, который, как говорится в руководстве, копируется в модель User. Это строка, которая выдает ошибку:

def self.find_record(login)
  where(attributes).where(["username = :value OR email = :value", { :value => login }]).first
end

Это ошибка, которую я получаю:

NameError (undefined local variable or method `attributes' for #<Class:0xa70e1a8>):

app/models/user.rb:63:in `find_record'
app/models/user.rb:44:in `find_recoverable_or_initialize_with_errors'
app/models/user.rb:30:in `send_reset_password_instructions'

Кто-нибудь знает, почему появляется эта ошибка?

1 Ответ

1 голос
/ 20 февраля 2011

Вы не передаете никаких атрибутов, и нет метода класса 'attribute', поэтому where(attributes) не работает. Похоже, вам тоже не нужно. Измените свой метод на:

def self.find_record(login)
  where(["username = :value OR email = :value", { :value => login }]).first
end

Что бы это ни стоило, я не понимаю, как это сработало бы в этом уроке.

...