我一直在研究login module的项目,但我不确定这个帮助方法到底做了什么:
def self.authenticate(login, pass)
u = User.first(:login => login)
return nil if u.nil?
return u if User.encrypt(pass, u.salt) == u.hashed_password
nil
end
为什么不代替:
u = User.first(:login => login)
...你做的事情如下:
u = self.login
谢谢!
答案 0 :(得分:3)
first
帮助器方法定位数据库中与指定条件匹配的第一条记录。它在语义上等同于以下SQL语句:
SELECT * FROM Users WHERE login = 'foo' LIMIT 1
u = User.first(:login => login)
之后的代码执行以下操作:
1.检查是否有用户返回指定的登录名
2.如果密码匹配,则返回User对象。
答案 1 :(得分:1)
u = User.first(:login => login)
表示“转到数据库,找到第一个用户对象,其登录名等于传入的用户ID作为”login“参数。将此分配给你。
答案 2 :(得分:0)
因为您正在寻找相应的用户对象,而不仅仅是登录名。