Rails: лучше отправлять уведомления по электронной почте от модели или контроллера? - PullRequest
4 голосов
/ 04 октября 2010

Предполагается, что почтовые сообщения отправляются для последующей обработки (например, через starling или delayed_job).

Я хочу знать, что лучше отправлять уведомления по электронной почте от ActiveController s или ActiveRecord s?

Полагаю, полезно поместить его в контроллер, так как вы можете захотеть контролировать, следует ли отправлять электронную почту или нет (т.е. после сохранения модели некоторые другие критерии могут быть важны), но идея о том, что существуетОДНО место (модель), из которого отправляется электронное письмо, если оно обрабатывается из модели после сохранения (создания или обновления и т. Д.), Также полезно.

Кто-нибудь из вас сталкивался с этой дилеммой?Что вы выбрали и почему?Вы сделали что-то совершенно другое?

Ответы [ 2 ]

9 голосов
/ 04 октября 2010

Лично мне нравится группировать все вместе в ActiveRecord. Тем не менее, специально для отправки электронной почты, я всегда делаю это с контроллера. Просто представьте, что вы запускаете модульные тесты или изменяете какую-то запись с консоли. Я сталкиваюсь с двумя ситуациями, когда я не хочу, чтобы электронные письма отправлялись.

1 голос
/ 04 октября 2010

ИМХО, рельсы - это гибкая структура, и, как бы вы ни начинали, вы всегда можете переключиться с модели на контроллер и обратно практически без усилий. Другими словами, это не проблема, которую стоит потратить на 2 часа.

Но важно то, что у вас есть все отправляющие код в одном месте (обычно в подклассе ActionMailer::Base). Таким образом, для изменения места, откуда вы отправляете письмо, достаточно переместить одну строку кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...