Sha256: 601234d5d9882a9e4e16772d205459e31b4a04629e049edbe2d68b80202f8eec
Contents?: true
Size: 1.35 KB
Versions: 2
Compression:
Stored size: 1.35 KB
Contents
module Comee module Core class Price < ApplicationRecord self.abstract_class = true before_save :compute_status enum :status, {past: 0, current: 1, future: 2} enum :price_status, {draft: 0, approved: 1} scope :current, -> { where(status: Price.statuses[:current]) } scope :future, -> { where(status: Price.statuses[:future]) } belongs_to :product belongs_to :unit validates :price_status, :valid_from, :valid_to, presence: true validate :validate_price_validity_dates def validate_price_validity_dates return unless valid_from && valid_to period = Period.new(valid_from, valid_to) errors.add(:base, "Price validity date range is not correct.") unless period.valid? end def compute_status period = Period.new(valid_from, valid_to) if period.past? self.status = Price.statuses[:past] elsif period.current? self.status = Price.statuses[:current] elsif period.future? self.status = Price.statuses[:future] end end def past? Price.statuses[status] == Price.statuses[:past] end def current? Price.statuses[status] == Price.statuses[:current] end def future? Price.statuses[status] == Price.statuses[:future] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
comee_core-0.1.99 | app/models/comee/core/price.rb |
comee_core-0.1.98 | app/models/comee/core/price.rb |