我有一个用于AuthLogic's密码管理的acts_as_authentic用户模型。 AuthLogic在db-backed“crypted_password”属性的顶部添加“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类内的方法中设置密码属性?
答案 0 :(得分:1)
最好试试这个:
#user.rb
def password_and_confirm=(value)
self.password = value
self.password_confirmation = value
end
否则ruby会尝试将方法(因为它实现的方式)视为局部变量(这在赋值操作中具有优先权)。