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