У нас есть либа, которая заруливает отправку всех нотификаций. Выглядит это следующим образом. Есть глобальный класс, который ты вызываешь с юзером (и его настройками) и с параметрами Notify.new.call(account, title: 'bla bla')
. У этого класса есть куча стратегий (text, email, push, etc) которые вызываются все для каждого юзера. Но в каждой стратегии указывается условие, при котором эту стратегию нужно выполнять, т.е.:
class TestStrategy
# ...
def allow?(preferences)
preferences.allow_email
end
end
Т.е. для конечного юзера вот этой либы процесс выглядит следующим образом:
account = AccountRepo.new.aggregate(:preferences).by_pk(1).one!
# => account.preferences.allow_text => false
# => account.preferences.allow_email => true
Notify.new(strategies: [:email, :text, :push]).call(account, title: 'bla bla')
# => { text: false, email: true, push: false }
Немножко непонятно как это связывается, например, с отдельными mailers и шаблонами для них. Можно пример? :)