7.5 Упражнения
- Скопируйте каждый из вариантов метода
authenticate
из Листинга 7.27 по Листинг 7.31 в Вашу модель User, и проверьте, что они корректны, запустив Ваш набор тестов. - Последний пример
authenticate
(Листинг 7.31) это практически вызов. Поэкспериментируйте в консоли, чтобы увидеть, сможете ли Вы понять, как это работает. - Как бы Вы заставили работать Gravatar хелпер
gravatar_for
если бы наша модель User использовалаemail_address
вместоemail
для отображения email адреса?
Листинг 7.27.
authenticate
метод с User
вместо self
. def User.authenticate(email, submitted_password)
user = find_by_email(email)
return nil if user.nil?
return user if user.has_password?(submitted_password)
end
Листинг 7.28.
authenticate
метод с явным третьим return
. def self.authenticate(email, submitted_password)
user = find_by_email(email)
return nil if user.nil?
return user if user.has_password?(submitted_password)
return nil
end
Листинг 7.29.
authenticate
метод использующий if
выражение. def self.authenticate(email, submitted_password)
user = find_by_email(email)
if user.nil?
nil
elsif user.has_password?(submitted_password)
user
else
nil
end
end
Листинг 7.30. The
authenticate
метод использующий an if
выражение и неявное возвращение. def self.authenticate(email, submitted_password)
user = find_by_email(email)
if user.nil?
nil
elsif user.has_password?(submitted_password)
user
end
end
Листинг 7.31. The
authenticate
метод использующий тройной оператор. def self.authenticate(email, submitted_password)
user = find_by_email(email)
user && user.has_password?(submitted_password) ? user : nil
end