module SchemaValidations

generated from version VERSION_INFO

Public Instance Methods

belongs_to_presence_validations_for(not_null_columns) click to toggle source
# File lib/generated_schema_validations/template.rb, line 30
def belongs_to_presence_validations_for(not_null_columns)
  reflect_on_all_associations(:belongs_to).each do |association|
    if not_null_columns.include?(association.foreign_key.to_sym)
      validates association.name, presence: true
      schema_validations_excluded_columns.push(association.foreign_key.to_sym)
    end
  end
end
belongs_to_uniqueness_validations_for(unique_indexes) click to toggle source
# File lib/generated_schema_validations/template.rb, line 39
def belongs_to_uniqueness_validations_for(unique_indexes)
  reflect_on_all_associations(:belongs_to).each do |association|
    dbv_uniqueness_validations_for(unique_indexes, foreign_key: association.foreign_key.to_s,
                                                   column: association.name)
  end
end
dbv_uniqueness_validations_for(unique_indexes, foreign_key:, column:) click to toggle source
# File lib/generated_schema_validations/template.rb, line 54
def dbv_uniqueness_validations_for(unique_indexes, foreign_key:, column:)
  unique_indexes.each do |names|
    next unless foreign_key.in?(names)
    next if column.to_sym.in?(schema_validations_excluded_columns)

    scope = (names - [foreign_key]).map(&:to_sym)
    options = { allow_nil: true }
    options[:scope] = scope if scope.any?
    options[:if] = (proc do |record|
      if scope.all? { |scope_sym| record.public_send(:"#{scope_sym}?") }
        record.public_send(:"#{foreign_key}_changed?")
      else
        false
      end
    end)

    validates column, uniqueness: options
  end
end
schema_validations(exclude: [], schema_table_name: table_name) click to toggle source
# File lib/generated_schema_validations/template.rb, line 17
def schema_validations(exclude: [], schema_table_name: table_name)
  self.schema_validations_excluded_columns += exclude
  send("dbv_#{schema_table_name}_validations")
end
uniqueness_validations_for(unique_indexes) click to toggle source
# File lib/generated_schema_validations/template.rb, line 46
def uniqueness_validations_for(unique_indexes)
  unique_indexes.each do |names|
    names.each do |name|
      dbv_uniqueness_validations_for(unique_indexes, foreign_key: name, column: name)
    end
  end
end
validates_with_filter(attribute, options) click to toggle source
# File lib/generated_schema_validations/template.rb, line 24
def validates_with_filter(attribute, options)
  return if attribute.to_sym.in?(schema_validations_excluded_columns)

  validates attribute, options
end