class ActsAsSpan::WithinParentDateSpanValidator
Public Instance Methods
outside_of_parent_date_span?(record, parent_sym)
click to toggle source
# File lib/acts_as_span/within_parent_date_span_validator.rb, line 13 def outside_of_parent_date_span?(record, parent_sym) parent = record.send(parent_sym) return false if parent.nil? child_record_without_start_date(record, parent) || child_record_without_end_date(record, parent) || child_record_started_before_parent_record(record, parent) || child_record_ended_after_parent_record(record, parent) end
validate(record)
click to toggle source
# File lib/acts_as_span/within_parent_date_span_validator.rb, line 3 def validate(record) parents = options[:parent] || options[:parents] error_message = options[:message] || :not_within_parent_date_span Array(parents).each do |parent| record.errors.add(:base, error_message, parent: record.class.human_attribute_name(parent)) if outside_of_parent_date_span?(record, parent) end end
Private Instance Methods
child_record_ended_after_parent_record(record, parent)
click to toggle source
# File lib/acts_as_span/within_parent_date_span_validator.rb, line 31 def child_record_ended_after_parent_record(record, parent) record.span.end_date.present? && parent.span.end_date.present? && record.span.end_date > parent.span.end_date end
child_record_started_before_parent_record(record, parent)
click to toggle source
# File lib/acts_as_span/within_parent_date_span_validator.rb, line 26 def child_record_started_before_parent_record(record, parent) record.span.start_date.present? && parent.span.start_date.present? && record.span.start_date < parent.span.start_date end
child_record_without_end_date(record, parent)
click to toggle source
# File lib/acts_as_span/within_parent_date_span_validator.rb, line 40 def child_record_without_end_date(record, parent) record.span.end_date.nil? && parent.span.end_date.present? end
child_record_without_start_date(record, parent)
click to toggle source
# File lib/acts_as_span/within_parent_date_span_validator.rb, line 36 def child_record_without_start_date(record, parent) record.span.start_date.nil? && parent.span.start_date.present? end