Sha256: 1bb0afd4ebc55f9cb70ab13b8006dc1112a73b3994a9f076565f195881d5aceb
Contents?: true
Size: 1.28 KB
Versions: 67
Compression:
Stored size: 1.28 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} scope :current, -> { where(status: Price.statuses[:current]) } scope :future, -> { where(status: Price.statuses[:future]) } belongs_to :product belongs_to :unit validates :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
67 entries across 67 versions & 1 rubygems