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