Rails - Соглашения Action Mailer - PullRequest
       17

Rails - Соглашения Action Mailer

3 голосов
/ 10 января 2012

Думая о внедрении (немного) более разумной системы уведомлений в моем проекте. Что я хотел бы сделать, так это отправить по электронной почте пользователю несколько новых, скажем, личных сообщений один раз в течение определенного периода времени, а не каждый раз, когда он получает новое сообщение. Конечно, не обойдется без delayed_job , но здесь у меня есть пара вопросов по поводу ActionMailer:

  1. Сколько логики вы можете поместить в класс Mailer?
  2. Можно ли выполнять запросы к базе данных в методах класса Mailer?

Ответы [ 2 ]

5 голосов
/ 10 января 2012

Таким образом, вы будете отправлять по электронной почте «Дайджест» различных «уведомлений», которые происходят в системе.

Я предлагаю вам перенести логику, которая прямо сейчас отправляет электронное письмо с помощью ActionMailer в класс уведомлений,При этом будет сохраняться уведомление с флагом, установленным в значение false для notified (или аналогичного).

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

2 голосов
/ 10 января 2012

Я бы предложил свести логику ActionMailer к минимуму: просто отрисовать электронную почту и выполнить фактическую доставку.

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

...