module Newsletterable::Subscriber
Public Instance Methods
field_for(list_name)
click to toggle source
# File lib/newsletterable/subscriber.rb, line 59 def field_for(list_name) if options = options_for(list_name) options[:field] else nil end end
manage_subscription(list_name)
click to toggle source
# File lib/newsletterable/subscriber.rb, line 15 def manage_subscription(list_name) field = field_for(list_name) list_ids = resolve_list(list_name) if send(field) subscription_service.subscribe(list_ids) else subscription_service.unsubscribe(list_ids) end end
options_for(list_name)
click to toggle source
# File lib/newsletterable/subscriber.rb, line 55 def options_for(list_name) self.class.__newsletterable_options[list_name] end
remove_subscription(list_name)
click to toggle source
# File lib/newsletterable/subscriber.rb, line 50 def remove_subscription(list_name) list_ids = resolve_list(list_name) subscription_service.unsubscribe(list_ids) end
resolve_list(list_name)
click to toggle source
# File lib/newsletterable/subscriber.rb, line 26 def resolve_list(list_name) options = options_for(list_name) lists = options[:lists] || Newsletterable.configuration.default_lists resolver = options[:resolver] || Newsletterable.configuration.list_resolver if resolver.is_a?(Symbol) self.send(resolver, list_name, lists) elsif resolver.respond_to?(:call) resolver.call(self, list_name, lists) else raise ConfigurationError, 'Newsletterable resolver should be a Symbol or callable.' end end
subscription_service()
click to toggle source
# File lib/newsletterable/subscriber.rb, line 11 def subscription_service @subscription_service ||= Service.new(self) end
update_subscription(list_name) { || ... }
click to toggle source
# File lib/newsletterable/subscriber.rb, line 41 def update_subscription(list_name) old_email = Newsletterable.configuration.old_email_getter.call(self) yield list_ids = resolve_list(list_name) subscription_service.update(list_ids, old_email) end