Module: Caffeinate::ActiveRecord::Extension

Defined in:
lib/caffeinate/active_record/extension.rb

Instance Method Summary collapse

Instance Method Details

#caffeinate_subscriberObject

Adds the associations for a subscriber



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/caffeinate/active_record/extension.rb', line 7

def caffeinate_subscriber
  has_many :caffeinate_campaign_subscriptions, as: :subscriber, class_name: '::Caffeinate::CampaignSubscription'
  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|
    subscribed = ::Caffeinate::CampaignSubscription.select(:subscriber_id).joins(:caffeinate_campaign).where(caffeinate_campaigns: { slug: list }, subscriber_type: name)
    where.not(id: subscribed)
  }

  scope :unsubscribed_from_campaign, lambda { |list|
    unsubscribed = ::Caffeinate::CampaignSubscription
                   .unsubscribed
                   .select(:subscriber_id)
                   .joins(:caffeinate_campaign)
                   .where(caffeinate_campaigns: { slug: list }, subscriber_type: name)
    where(id: unsubscribed)
  }
end

#caffeinate_userObject

Adds the associations for a user



28
29
30
# File 'lib/caffeinate/active_record/extension.rb', line 28

def caffeinate_user
  has_many :caffeinate_campaign_subscriptions_as_user, as: :user, class_name: '::Caffeinate::CampaignSubscription'
end