class Detox::Validations::OrderingValidator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/detox/validations/ordering.rb, line 9
def validate_each(record, attribute, value)
  args = { :record => record,
           :attribute => attribute,
           :value => value,
           :message => options[:message] || :invalid_as_order,
           :options => options }

  validate_values(args)
end

Private Instance Methods

first_number() click to toggle source
# File lib/detox/validations/ordering.rb, line 33
def first_number
  num = options[:start_with].to_i
  num.zero? ? 1 : num
end
normalize_values_for_compare(values) click to toggle source
# File lib/detox/validations/ordering.rb, line 38
def normalize_values_for_compare(values)
  values.map(&:to_s).sort
end
same_values?(values, another) click to toggle source
# File lib/detox/validations/ordering.rb, line 24
def same_values?(values, another)
  normalize_values_for_compare(values) == normalize_values_for_compare(another)
end
valid_numbers(length) click to toggle source
# File lib/detox/validations/ordering.rb, line 28
def valid_numbers(length)
  last_number = first_number + length
  (first_number...last_number).to_a
end
values_valid?(values) click to toggle source
# File lib/detox/validations/ordering.rb, line 20
def values_valid?(values)
  same_values?(valid_numbers(values.length), values)
end