Authlogic: не может установить атрибут пароля из класса - PullRequest
0 голосов
/ 14 февраля 2010

У меня есть модель пользователя, которая действует_as_authentic для управления паролями AuthLogic. AuthLogic добавляет атрибуты «password» и «password_confirmation» поверх атрибута «crypted_password», поддерживаемого БД. Это довольно стандартные вещи AuthLogic.

Я хочу иметь метод, который одновременно устанавливает и пароль, и пароль_подтверждения (полезно для внутренних приложений, где меня не волнуют опечатки). Для этого я создал новый метод в User:

#user.rb
def password_and_confirm=(value)
  password = value
  password_confirmation = value
end

Однако при вызове этого метода не , кажется, фактически устанавливает пароль:

user = User.new
user.password = "test"
user.password               # => "test"
user.crypted_password       # => a big base64 string, as expected

user = User.new
user.password_and_confirm = "test"
user.password               # => nil
user.crypted_password       # => nil

Я также пробовал другой маршрут:

def internal_password(value)
  password = value
end

... и получил ту же проблему.

Почему я не могу установить атрибут пароля из метода внутри класса User?

1 Ответ

1 голос
/ 15 февраля 2010

Лучше попробуйте это:

#user.rb
def password_and_confirm=(value)
  self.password = value
  self.password_confirmation = value
end

В противном случае ruby ​​пытается рассматривать методы (как они реализованы как таковые) как локальные переменные (это имеет приоритет во время операций присваивания).

...