module Newsletterable::Subscriber::ClassMethods

Public Instance Methods

subscribe_on(list_name, options = {}) click to toggle source
# File lib/newsletterable/subscriber.rb, line 68
def subscribe_on(list_name, options = {})
        field = options[:field] || list_name

        self.__newsletterable_options ||= {}
        self.__newsletterable_options[list_name] = options.merge(field: field)

        after_save     -> { manage_subscription(list_name) }, if: :"#{field}_changed?"
        define_method :"update_subscription_#{list_name}" do |&block|
                update_subscription(list_name, &block)
        end
        around_update  :"update_subscription_#{list_name}", if: -> { send(:"#{field}?") && email_changed? }
        unless options[:unsubscribe_on_destroy]
                before_destroy -> { remove_subscription(list_name) }, if: :"#{field}?"
        end
end