Skip to Content Skip to Search
Methods
A
C
D
I
O
P
R
S
T

Constants

STATUSES = active_statuses + inactive_statuses
 

Class Public methods

active_statuses()

# File app/models/db/subscription.rb, line 4
def self.active_statuses
  %w[active trialing past_due]
end

inactive_statuses()

# File app/models/db/subscription.rb, line 8
def self.inactive_statuses
  %w[canceled incomplete incomplete_expired unpaid]
end

Instance Public methods

amount()

# File app/models/db/subscription.rb, line 90
def amount
  final_amount = plan.amount
  final_amount = [0, (final_amount - get_discount)].max if discount
  final_amount
end

churned?()

# File app/models/db/subscription.rb, line 96
def churned?
  failed_payments.where({status: "churned"}).exists?
end

discount()

Support legacy data

# File app/models/db/subscription.rb, line 105
def discount
  raw_discount = super

  if raw_discount.is_a?(String)
    JSON.parse(raw_discount)
  else
    raw_discount
  end
rescue JSON::ParserError
  raw_discount
end

order_id()

# File app/models/db/subscription.rb, line 86
def order_id
  payment_gateway_id
end

payment_failure?()

# File app/models/db/subscription.rb, line 78
def payment_failure?
  %w[active trialing].exclude?(status) && pending_intent_id?
end

pending_cancellation?()

# File app/models/db/subscription.rb, line 82
def pending_cancellation?
  cancels_on? && cancels_on > Time.current
end

remote_subscription()

Also aliased as: stripe_subscription
# File app/models/db/subscription.rb, line 117
def remote_subscription
  @remote_subscription ||= PaymentGateway.retrieve_subscription(model: self, expand: ["latest_invoice"])
end

site()

# File app/models/db/subscription.rb, line 122
def site
  @site ||= plan.try(:site) || member.try(:site)
end

stripe_subscription()

Alias for: remote_subscription

to_liquid()

# File app/models/db/subscription.rb, line 100
def to_liquid
  EmailDrops::SubscriptionDrop.new(self)
end