class Newsletterable::Service
Attributes
subscribable[R]
Public Class Methods
new(subscribable)
click to toggle source
# File lib/newsletterable/service.rb, line 5 def initialize(subscribable) @subscribable = subscribable end
Public Instance Methods
subscribe(lists)
click to toggle source
# File lib/newsletterable/service.rb, line 9 def subscribe(lists) lists.each do |list| subscription = orm_adapter.query_subscription({ subscribable: subscribable, list: list }, true) if subscription.unsubscribed? || subscription.error? subscription.pending! end orm_adapter.save(subscription) unless subscription.subscribed? end end
unsubscribe(lists)
click to toggle source
# File lib/newsletterable/service.rb, line 24 def unsubscribe(lists) lists.each do |list| subscription = orm_adapter.query_subscription( subscribable: subscribable, list: list ) if !subscription.nil? && subscription.subscribed? subscription.old_email = subscribable.email subscription.unsubscribed! orm_adapter.save(subscription) end end end
update(lists, old_email)
click to toggle source
# File lib/newsletterable/service.rb, line 38 def update(lists, old_email) lists.each do |list| subscription = orm_adapter.query_subscription( subscribable: subscribable, list: list ) if subscription.nil? raise RuntimeError, "No subscription to update for subscribable #{subscribable.id}." end subscription.out_of_date! subscription.old_email = old_email orm_adapter.save(subscription) end end
Private Instance Methods
orm_adapter()
click to toggle source
# File lib/newsletterable/service.rb, line 57 def orm_adapter @orm_adapter ||= OrmAdapters::Adapter.factory(Newsletterable.configuration.orm_adapter) end