«первый» вспомогательный метод - PullRequest
1 голос
/ 14 августа 2011

Я искал проект для модуля входа , но я не совсем уверен, что делает этот вспомогательный метод:

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 ]

3 голосов
/ 14 августа 2011

Вспомогательный метод first находит первую запись в вашей базе данных, которая соответствует заданным критериям. Это семантически эквивалентно следующему оператору SQL:

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

Код после u = User.first(:login => login) выполняет следующие действия: 1. Проверяет, вернулся ли пользователь с указанным логином 2. Возвращает объект User, если пароли совпадают.

1 голос
/ 14 августа 2011
u = User.first(:login => login)

означает «перейти в базу данных и найти меня первый объект пользователя, чей логин равен идентификатору пользователя, переданному в качестве параметра« login ». Присвойте его u.

»
0 голосов
/ 14 августа 2011

Поскольку вы ищете соответствующий объект пользователя, а не просто имя для входа.

...