moonleerecords/moonlee-website

View on GitHub
app/models/release_type_buy_link.rb

Summary

Maintainability
A
0 mins
Test Coverage
class ReleaseTypeBuyLink < ApplicationRecord
  default_scope { order('source ASC') }

  belongs_to :release_type

  SOURCE_INTERNAL = 'internal'.freeze
  SOURCE_EXTERNAL = 'external'.freeze

  ALLOWED_SOURCES = [SOURCE_INTERNAL, SOURCE_EXTERNAL].freeze

  validates :source, inclusion: { in: ALLOWED_SOURCES }, presence: true
  validates :title, presence: true, if: :source_is_external?
  validates :buy_url, presence: true

  def self.allowed_sources
    ALLOWED_SOURCES
  end

  def source_is_external?
    source == SOURCE_EXTERNAL
  end

  scope :internal, -> { where(source: SOURCE_INTERNAL) }
  scope :external, -> { where(source: SOURCE_EXTERNAL) }
end