class DefaultValidations::ValidationsCreator

Public Class Methods

create_integer_validations_for_class(klass) click to toggle source
# File lib/default_validations/validations_creator.rb, line 22
def create_integer_validations_for_class(klass)
  not_validated_attributes = not_validated_integer_attributes_for_class(klass)
  if not_validated_attributes.present?
    klass.class_eval do
      validates *not_validated_attributes, numericality: { greater_than: -DefaultValidations.integer_max_value, less_than: DefaultValidations.integer_max_value }
    end
  end
end
create_string_validations_for_class(klass) click to toggle source
# File lib/default_validations/validations_creator.rb, line 13
def create_string_validations_for_class(klass)
  not_validated_attributes = not_validated_string_attributes_for_class(klass)
  if not_validated_attributes.present?
    klass.class_eval do
      validates *not_validated_attributes, length: { maximum: DefaultValidations.string_length }
    end
  end
end
create_validations() click to toggle source
# File lib/default_validations/validations_creator.rb, line 5
def create_validations
  models_to_validate.each do |klass|
    create_string_validations_for_class(klass) if DefaultValidations.validate_strings
    create_integer_validations_for_class(klass) if DefaultValidations.validate_integers
  end
end

Private Class Methods

all_models_with_table() click to toggle source
# File lib/default_validations/validations_creator.rb, line 32
def all_models_with_table
  ActiveRecord::Base.descendants.select(&:table_exists?)
end
carrier_wave_uploader_attributes(klass) click to toggle source
# File lib/default_validations/validations_creator.rb, line 41
def carrier_wave_uploader_attributes(klass)
  DefaultValidations.ignore_carrierwave_uploaders ? klass.uploaders.keys.map(&:to_s) : []
end
excluded_primary_and_foreign_keys_for_class(klass) click to toggle source
# File lib/default_validations/validations_creator.rb, line 57
def excluded_primary_and_foreign_keys_for_class(klass)
  klass.reflect_on_all_associations(:belongs_to).map(&:foreign_key) << klass.primary_key
end
models_to_validate() click to toggle source
# File lib/default_validations/validations_creator.rb, line 36
def models_to_validate
 @@models ||= DefaultValidations.models.empty? ? (all_models_with_table - DefaultValidations.excluded_models)
                                                 : DefaultValidations.models
end
not_validated_integer_attributes_for_class(klass) click to toggle source
# File lib/default_validations/validations_creator.rb, line 51
def not_validated_integer_attributes_for_class(klass)
  not_validated_attributes = klass.column_names.select do |name|
    klass.columns_hash[name].type == :integer && !klass.validators_on(name).map(&:class).include?(ActiveModel::Validations::NumericalityValidator)
  end - excluded_primary_and_foreign_keys_for_class(klass)
end
not_validated_string_attributes_for_class(klass) click to toggle source
# File lib/default_validations/validations_creator.rb, line 45
def not_validated_string_attributes_for_class(klass)
  not_validated_attributes = klass.column_names.select do |name|
    klass.columns_hash[name].type == :string && !klass.validators_on(name).map(&:class).include?(ActiveModel::Validations::LengthValidator)
  end - carrier_wave_uploader_attributes(klass)
end