При отправке почты в Rails, как правило, можно было бы сделать что-то вроде этого:Как вы можете вызвать методы класса в почтовых программах, если они не определены как таковые?
UserMailer.password_reset(user).deliver
Но если заглянуть внутрь UserMailer
мы можем увидеть это:
def password_reset(user) # not self.password_reset
# ...
end
Обратите внимание, что имя метода не с префиксом self
. Глядя на это, кажется, вам нужно создать экземпляр объекта сначала, как показано ниже. Как Rails это делает?
UserMailer.new.password_reset(user).deliver
спасибо. Но почему бы просто не сделать его классным методом? Что мы получаем от этого подхода? – dee
Я не уверен, полностью ли я понимаю. Вы имеете в виду, почему бы не сделать его методом экземпляра? Итак, как UserMailer.new.password_reset (пользователь) .deliver? – Rebitzele
Я имею в виду, почему использование метода отсутствует? Сохраните его 'UserMailer.password_reset (user) .deliver', но измените' def method' на 'def self.method' – dee