【问题标题】:"first" helper method“第一个”辅助方法
【发布时间】:2011-10-26 15:06:33
【问题描述】:

我一直在寻找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

谢谢!

【问题讨论】:

    标签: ruby methods helper


    【解决方案1】:

    first 辅助方法定位数据库中与指定条件匹配的第一条记录。它在语义上等价于下面的 SQL 语句:

    SELECT * FROM Users WHERE login = 'foo' LIMIT 1
    

    u = User.first(:login => login) 之后的代码执行以下操作: 1.检查是否有返回指定登录的用户 2. 如果密码匹配,则返回用户对象。

    【讨论】:

      【解决方案2】:
      u = User.first(:login => login)
      

      意思是“去数据库,找到第一个用户对象,它的登录名等于作为“登录”参数传入的用户ID。把这个分配给你。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-05
          • 1970-01-01
          • 2014-05-03
          • 2012-12-30
          相关资源
          最近更新 更多