class Mv::Core::Validation::Builder::Inclusion

Public Instance Methods

conditions() click to toggle source
# File lib/mv/core/validation/builder/inclusion.rb, line 10
def conditions
  [{
    statement: apply_allow_nil_and_blank(apply_in(column_reference)),
    message: message
  }]
end

Protected Instance Methods

apply_in(stmt) click to toggle source
# File lib/mv/core/validation/builder/inclusion.rb, line 29
def apply_in stmt
  if self.in.is_a?(Range)
    "#{stmt} BETWEEN #{db_value(self.in.min)} AND #{db_value(self.in.max)}"
  else
    prepared_in = self.in.to_a.collect{ |v| db_value(v) }

    "#{stmt} IN (#{prepared_in.join(', ')})"
  end
end
db_value(value) click to toggle source
# File lib/mv/core/validation/builder/inclusion.rb, line 19
def db_value value
  return value if value.is_a?(Integer) or value.is_a?(Float)
  return "'#{value.to_s}'" if value.is_a?(String)
  raise Mv::Core::Error.new(table_name: table_name,
                            column_name: column_name,
                            validation_type: :inclusion,
                            options: { in: value },
                            error: "#{value.class} is not supported as :in value")
end