class PrettyValidation::Validation

Attributes

column_name[R]
method_name[R]
options[R]

Public Class Methods

new(method_name, column_name, options = nil) click to toggle source
# File lib/pretty_validation/validation.rb, line 36
def initialize(method_name, column_name, options = nil)
  @method_name = method_name
  @column_name = column_name
  @options = options
end
sexy_validations(table_name) click to toggle source
# File lib/pretty_validation/validation.rb, line 9
def self.sexy_validations(table_name)
  columns = Schema.columns(table_name)
  columns = columns.reject { |x| x.name.in? %w(id created_at updated_at) }

  columns.map do |column|
    options = {}
    options[:presence] = true unless column.null
    options[:numericality] = true if column.type == :integer

    Validation.new('validates', column.name.to_sym, options) if options.present?
  end.compact
end
unique_validations(table_name) click to toggle source
# File lib/pretty_validation/validation.rb, line 22
def self.unique_validations(table_name)
  Schema.indexes(table_name).select(&:unique).reverse.map do |x|
    column_name = x.columns[0]
    scope = x.columns[1..-1].map(&:to_sym)
    options = if scope.size > 1
                { scope: scope }
              elsif scope.size == 1
                { scope: scope[0] }
              end

    Validation.new('validates_uniqueness_of', column_name.to_sym, options)
  end
end

Public Instance Methods

==(other) click to toggle source
# File lib/pretty_validation/validation.rb, line 42
def ==(other)
  method_name == other.method_name &&
    column_name == other.column_name &&
    options == other.options
end
to_s() click to toggle source
# File lib/pretty_validation/validation.rb, line 48
def to_s
  if options.blank?
    "#{method_name} #{column_name.inspect}"
  else
    "#{method_name} #{column_name.inspect}, #{options.to_s}"
  end
end