module Caffeinate::ActiveRecord::Extension

Includes the ActiveRecord association and relevant scopes for an ActiveRecord-backed model

Public Instance Methods

acts_as_caffeinate_subscriber() click to toggle source

Adds the associations for a subscriber

# File lib/caffeinate/active_record/extension.rb, line 8
def acts_as_caffeinate_subscriber
  has_many :caffeinate_campaign_subscriptions, as: :subscriber, class_name: '::Caffeinate::CampaignSubscription', dependent: :destroy
  has_many :caffeinate_campaigns, through: :caffeinate_campaign_subscriptions, class_name: '::Caffeinate::Campaign'
  has_many :caffeinate_mailings, through: :caffeinate_campaign_subscriptions, class_name: '::Caffeinate::Mailing'

  scope :not_subscribed_to_campaign, lambda { |list|
    where.not(id: ::Caffeinate::CampaignSubscription
                      .select(:subscriber_id)
                      .joins(:caffeinate_campaign)
                      .where(subscriber_type: name, caffeinate_campaigns: { slug: list }))
  }

  scope :unsubscribed_from_campaign, lambda { |list|
    where(id: ::Caffeinate::CampaignSubscription
                  .unsubscribed
                  .select(:subscriber_id)
                  .joins(:caffeinate_campaign)
                  .where(subscriber_type: name, caffeinate_campaigns: { slug: list }))
  }
end
Also aliased as: caffeinate_subscriber
acts_as_caffeinate_user() click to toggle source

Adds the associations for a user

# File lib/caffeinate/active_record/extension.rb, line 31
def acts_as_caffeinate_user
  has_many :caffeinate_campaign_subscriptions_as_user, as: :user, class_name: '::Caffeinate::CampaignSubscription'
  has_many :caffeinate_campaigns_as_user, through: :caffeinate_campaign_subscriptions_as_user, class_name: '::Caffeinate::Campaign'
  has_many :caffeinate_mailings_as_user, through: :caffeinate_campaign_subscriptions_as_user, class_name: '::Caffeinate::Campaign'
end
Also aliased as: caffeinate_user
caffeinate_subscriber()
caffeinate_user()