module Temporality::Validation

Constants

CONSTRAINTS
DEFAULTS

Public Instance Methods

valid?(*args, &block) click to toggle source
Calls superclass method
# File lib/temporality/validation.rb, line 17
def valid?(*args, &block)
  validate_temporality_contraints!
  super(*args, &block)
end

Private Instance Methods

temporal_associations() click to toggle source
# File lib/temporality/validation.rb, line 51
def temporal_associations
  self.class.instance_variable_get(:@temporality) || {}
end
validate_bounds_order() click to toggle source
# File lib/temporality/validation.rb, line 45
def validate_bounds_order
  if starts_on > ends_on
    raise Temporality::Violation.new("Start date is after end date [#{starts_on} - #{ends_on}]")
  end
end
validate_constraint(assoc, constraint_name) click to toggle source
# File lib/temporality/validation.rb, line 41
def validate_constraint(assoc, constraint_name)
  CONSTRAINTS[constraint_name].new(self, assoc).validate
end
validate_temporality_contraints!() click to toggle source
# File lib/temporality/validation.rb, line 25
def validate_temporality_contraints!
  validate_bounds_order

  temporal_associations.each do |assoc, constrs|
    constraints = constrs.dup

    if constraints.delete(:auto_close)
      AutoClose.new(self, assoc).call
    end

    constraints.map { |constraint, enabled| constraint if enabled }.compact.each do |constraint|
      validate_constraint(assoc, constraint)
    end
  end
end