module DatabaseValidation::ModelAdditions

Constants

AVAILABLE_TYPES

Avoids adding LengthValidator to boolean, date or datetime attributes.

Public Instance Methods

column_belongs?(attr) click to toggle source
# File lib/database_validation/model_additions.rb, line 22
def column_belongs?(attr)
  column_names.map(&:to_sym).include?(attr)
end
limit_for(attr) click to toggle source
# File lib/database_validation/model_additions.rb, line 6
def limit_for(attr)
  columns_hash.with_indifferent_access[attr].limit if column_belongs?(attr)
end
type_for(attr) click to toggle source
# File lib/database_validation/model_additions.rb, line 10
def type_for(attr)
  columns_hash.with_indifferent_access[attr].type if column_belongs?(attr)
end
valid_limit?(attr) click to toggle source
# File lib/database_validation/model_additions.rb, line 14
def valid_limit?(attr)
  limit_for(attr) != nil
end
valid_type?(attr) click to toggle source
# File lib/database_validation/model_additions.rb, line 18
def valid_type?(attr)
  AVAILABLE_TYPES.include?(type_for(attr))
end
validate_limits(options = {}) click to toggle source
# File lib/database_validation/model_additions.rb, line 26
def validate_limits(options = {})
  columns = content_columns.map(&:name).map(&:to_sym)

  if options[:only].present?
    columns &= [*options[:only]]
  elsif options[:except].present?
    columns -= [*options[:except]]
  end

  columns.each do |column|
    validate_attr(column) if valid_limit?(column) && valid_type?(column)
  end
end

Private Instance Methods

validate_attr(attr) click to toggle source
# File lib/database_validation/model_additions.rb, line 41
def validate_attr(attr)
  validates attr, length: { maximum: limit_for(attr) }
end