Authlogic:无法在类中设置密码属性

时间:2010-02-14 20:40:23

标签: ruby-on-rails ruby passwords authlogic

我有一个用于AuthLogic's密码管理的acts_as_authentic用户模型。 AuthLogic在db-backed“crypted_pa​​ssword”属性的顶部添加“password”和“password_confirmation”属性。这是非常标准的AuthLogic内容。

我想要一个同时设置password和password_confirmation的方法(对于我不担心打字错误的内部应用程序很有用)。为此,我在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 个答案:

答案 0 :(得分:1)

最好试试这个:

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

否则ruby会尝试将方法(因为它实现的方式)视为局部变量(这在赋值操作中具有优先权)。