Если атрибут, который определяет, следует ли получать уведомления по электронной почте, является просто полем модели в БД, вы можете создать именованную область действия, называемую чем-то вроде 'want_email_notifications', чтобы получить всех пользователей, у которых есть подписался.
Итак, если у вас есть класс User
, и у этого класса есть атрибут с именем opt_out
, вы можете сделать что-то вроде:
class User < ActiveRecord::Base
named_scope :want_email_notifications, :conditions => ['opt_out = ?', false]
...
end
Затем, чтобы вызвать его, вы делаете User.want_email_notifications
, который дает вам массив всех User
объектов, которые хотят получать уведомления по электронной почте.
Затем, когда вы проверяете, должен ли данный пользователь получать уведомление по электронной почте, напишите условие, подобное:
send_email_notification(user_in_question) if User.want_email_notifications.include?(user_in_question)
В этом примере send_email_notification
- это метод, в котором вы вызываете связанный метод доставки, который фактически отправляет электронное письмо.