“第一”辅助方法

时间:2011-08-14 01:15:51

标签: ruby methods helper

我一直在研究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

谢谢!

3 个答案:

答案 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)

因为您正在寻找相应的用户对象,而不仅仅是登录名。