Sha256: 0873bee6c1214076e4ffe1e0fba1787ad5c53dfc5e80242142e8c1e6265ce171

Contents?: true

Size: 608 Bytes

Versions: 3

Compression:

Stored size: 608 Bytes

Contents

module ComingSoonPendingSubscribable
  extend ActiveSupport::Concern

  included do
    attr_writer :suppressed
    validate :pending_subscribe, if: :allow_pending_subscribe?
  end

  private

  NEWSLETTER = "mailchimp"

  def allow_pending_subscribe?
    !suppressed?
  end

  def suppressed?
    @suppressed ||= false
  end

  def pending_subscribe
    response = newsletter_provider_class.new.pending_subscribe(email: email)
    unless response.success?
      errors[:base] << response.error
    end
  end

  def newsletter_provider_class
    "#{NEWSLETTER.capitalize}::BaseAdapter".constantize
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
saaskit-0.1.2 lib/generators/saaskit/install/templates/app/models/concerns/coming_soon_pending_subscribable.rb
saaskit-0.1.1 lib/generators/saaskit/install/templates/app/models/concerns/coming_soon_pending_subscribable.rb
saaskit-0.1.0 lib/generators/saaskit/install/templates/app/models/concerns/coming_soon_pending_subscribable.rb