Я использую Rails 3.0.9, и у меня есть следующий код для отправки электронного письма при публикации комментария.
class Mailer < ActionMailer::Base
def comment_notification(comment)
User.active.each do |user|
@user = user
mail(:to => @user.email, :subject => subject)
end
end
end
Если нет активных пользователей, то User.active пуст и код внутри не выполняется. Однако представление отображается и происходит сбой из-за отсутствия @user.
вышеуказанный код вызывается наблюдателем
Mailer.comment_notification(comment).deliver
Одним из способов решения этой проблемы было бы изменить код в обозревателе на что-то вроде этого
User.active.each do |recipient|
Mailer.comment_notification(comment, recipient).deliver
end
Это правильный способ исправить это. Я бы хотел, чтобы мой наблюдатель был настолько худым, насколько это возможно.