Class: OverlapValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/validates_overlap/overlap_validator.rb

Constant Summary collapse

BEGIN_OF_UNIX_TIME =
Time.at(-2_147_483_648).to_datetime
END_OF_UNIX_TIME =
Time.at(2_147_483_648).to_datetime

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ OverlapValidator

Returns a new instance of OverlapValidator.



13
14
15
16
17
# File 'lib/validates_overlap/overlap_validator.rb', line 13

def initialize(args)
  attributes_are_range(args[:attributes])

  super
end

Instance Attribute Details

#scoped_modelObject

Returns the value of attribute scoped_model.



11
12
13
# File 'lib/validates_overlap/overlap_validator.rb', line 11

def scoped_model
  @scoped_model
end

#sql_conditionsObject

Returns the value of attribute sql_conditions.



9
10
11
# File 'lib/validates_overlap/overlap_validator.rb', line 9

def sql_conditions
  @sql_conditions
end

#sql_valuesObject

Returns the value of attribute sql_values.



10
11
12
# File 'lib/validates_overlap/overlap_validator.rb', line 10

def sql_values
  @sql_values
end

Instance Method Details

#validate(record) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/validates_overlap/overlap_validator.rb', line 19

def validate(record)
  initialize_query(record, options)
  if overlapped_exists?
    if options[:load_overlapped]
      record.instance_variable_set(:@overlapped_records, get_overlapped)
    end

    if record.respond_to? attributes.first
      if options[:message_title].is_a?(Array)
        options[:message_title].each do |key|
          record.errors.add(key, options[:message_content] || :overlap)
        end
      else
        record.errors.add(options[:message_title] || attributes.first, options[:message_content] || :overlap)
      end
    else
      record.errors.add(options[:message_title] || :base, options[:message_content] || :overlap)
    end
  end
end