module Newsletterable::Model::ClassMethods

Public Instance Methods

define_newsletterable_callbacks(klass) click to toggle source
# File lib/newsletterable/model.rb, line 37
def define_newsletterable_callbacks(klass)
        klass.class_eval do
                opts =[:enqueue_subscription, {
                        if: proc { |n| !n.subscribed? },
                        on: [:create, :update]
                }]

                if respond_to?(:after_commit)
                        after_commit(*opts)
                else
                        after_save(*opts)
                end
        end
end
define_newsletterable_state_methods(klass) click to toggle source
# File lib/newsletterable/model.rb, line 52
                        def define_newsletterable_state_methods(klass)
                                %i{ pending subscribed unsubscribed out_of_date error }.each do |state|
                                        klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
                                                def #{state}!
                                                        self.state = '#{state}'
                                                end

                                                def #{state}?
                                                        self.state.to_s == '#{state}'
                                                end
                                        RUBY
                                end
                        end