Introduce clubs con abbonamento, branding Active Storage e flusso registrazione società; corregge healthcheck MediaMTX (immagine distroless) e allinea dominio produzione matchlivetv.it. Co-authored-by: Cursor <cursoragent@cursor.com>
29 lines
560 B
Ruby
29 lines
560 B
Ruby
class Subscription < ApplicationRecord
|
|
STATUSES = %w[active trialing past_due canceled incomplete].freeze
|
|
ACTIVE_STATUSES = %w[active trialing].freeze
|
|
|
|
belongs_to :club
|
|
belongs_to :plan
|
|
|
|
validates :status, inclusion: { in: STATUSES }
|
|
validates :club_id, uniqueness: true
|
|
|
|
scope :active, -> { where(status: ACTIVE_STATUSES) }
|
|
|
|
def active?
|
|
status.in?(ACTIVE_STATUSES)
|
|
end
|
|
|
|
def premium?
|
|
active? && plan.premium?
|
|
end
|
|
|
|
def premium_full?
|
|
active? && plan.slug == "premium_full"
|
|
end
|
|
|
|
def free?
|
|
plan.slug == "free"
|
|
end
|
|
end
|