class Temporality::Completeness
Public Instance Methods
defer_key()
click to toggle source
# File lib/temporality/completeness.rb, line 20 def defer_key parent = @model.send(@assoc) "#{parent.class.name}_#{parent.id}_#{inverse_name}" end
error_message()
click to toggle source
# File lib/temporality/completeness.rb, line 25 def error_message "#{@model.send(@assoc).class} record must have a temporally complete children collection for assocation #{inverse_name}" end
perform_validation()
click to toggle source
# File lib/temporality/completeness.rb, line 14 def perform_validation days = @model.day_count + (inverse.where('id <> ?', @model.id || -1).map(&:day_count).inject(&:+) || 0) parent_days = @model.send(@assoc).day_count raise Temporality::Violation.new(error_message) unless (parent_days == days) end
validate()
click to toggle source
# File lib/temporality/completeness.rb, line 6 def validate if Temporality.active_transaction? Temporality.defer(defer_key) { perform_validation } else perform_validation end end