Отправка обновлений по электронной почте: модель или наблюдатель? - PullRequest
1 голос
/ 10 ноября 2009

У меня есть модель Event, в которой хранится лента событий для каждого пользователя. Мне также нужно отправить обновления по электронной почте пользователям, которые включили уведомления по электронной почте в своем профиле.

С архитектурной точки зрения, какой из них лучше?

  1. вызовите почтовую программу в методе after_create в модели , так как это часть бизнес-логики;
  2. вызовите почтовую программу в методе after_create в наблюдателе , поскольку он на самом деле не работает с моделью, а также зависит от настроек пользователя.

Ответы [ 3 ]

1 голос
/ 10 ноября 2009

Я бы пошел с наблюдателем. Моя причина в том, что отправка уведомлений по электронной почте не является важной частью бизнес-логики события (проще говоря, события не отправляют уведомления). Кроме того, как уже говорил Дэмиен, это вопрос разделения интересов.

Пожалуйста, см. Также обсуждение здесь .

0 голосов
/ 10 ноября 2009

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

0 голосов
/ 10 ноября 2009

На этот вопрос нет «волшебного» ответа, поскольку он субъективен.
Некоторые разработчики предпочитают делать это прямо в модели. Другие сделают это в наблюдателе.
То, что вы делаете, полностью зависит от вас. Оба решения действительны.

Я лично предпочитаю добавлять их в обозревателе, поскольку это позволяет мне размещать все пользовательские уведомления в одном месте, а не одно в одной модели, а другое в другой.

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