class SpicyValidation::Validation
Attributes
column_name[R]
method_name[R]
options[R]
Public Class Methods
new(method_name:, column_name:, options:)
click to toggle source
# File lib/spicy_validation/validation.rb, line 9 def initialize(method_name:, column_name:, options:) @method_name = method_name @column_name = column_name @options = options end
normal_validations(table_name:)
click to toggle source
# File lib/spicy_validation/validation.rb, line 15 def self.normal_validations(table_name:) columns = Schema.columns(table_name: 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 options[:allow_nil] = true if column.null && (column.type == :integer) Validation.new(method_name: "validates", column_name: column.name.to_sym, options: options) if options.present? end.compact end
unique_validations(table_name:)
click to toggle source
# File lib/spicy_validation/validation.rb, line 27 def self.unique_validations(table_name:) Schema.indexes(table_name: table_name).map do |index| column_name = index.columns[0] scope = index.columns[1..-1].map(&:to_sym) options = if scope.size > 1 { scope: scope } elsif scope.size == 1 { scope: scope[0] } end Validation.new(method_name: "validates_uniqueness_of", column_name: column_name.to_sym, options: options) end end
Public Instance Methods
to_s()
click to toggle source
# File lib/spicy_validation/validation.rb, line 40 def to_s if options.blank? "#{method_name} #{column_name.inspect}" else "#{method_name} #{column_name.inspect}, #{options.format_hash}" end end