class GeneratedSchemaValidations::Table
Constants
- Validation
Attributes
table_name[R]
Public Class Methods
new(table_name, &block)
click to toggle source
# File lib/generated_schema_validations/table.rb, line 12 def initialize(table_name, &block) @table_name = table_name @column_names = [] @possible_belongs_to_not_null_columns = [] @unique_indexes = [] @validations = [] instance_eval(&block) end
Public Instance Methods
bigint(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 55 def bigint(name, column_options = {}) null_validation(:bigint, name, column_options) validates name, :numericality, allow_nil: true end
binary(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 91 def binary(name, column_options = {}) null_validation(:binary, name, column_options) end
boolean(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 87 def boolean(name, column_options = {}) null_validation(:boolean, name, column_options) end
date(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 82 def date(name, column_options = {}) null_validation(:date, name, column_options) validates name, :date_in_db_range end
datetime(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 77 def datetime(name, column_options = {}) null_validation(:datetime, name, column_options) validates name, :date_time_in_db_range end
decimal(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 103 def decimal(name, column_options = {}) null_validation(:decimal, name, column_options) return if column_options[:array] return if column_options[:precision].blank? || column_options[:scale].blank? limit = 10**(column_options[:precision] - (column_options[:scale] || 0)) validates name, :numericality, allow_nil: true, greater_than: -limit, less_than: limit end
float(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 112 def float(name, column_options = {}) null_validation(:float, name, column_options) return if column_options[:array] validates name, :numericality, allow_nil: true end
index(names, index_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 127 def index(names, index_options = {}) names = [names] unless names.is_a?(Array) return unless index_options[:unique] return unless names.all? { |name| name.to_s.in?(@column_names) } @unique_indexes.push(names.map(&:to_s)) end
integer(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 61 def integer(name, column_options = {}) null_validation(:integer, name, column_options) return if column_options[:array] integer_range = ::ActiveRecord::Type::Integer.new.send(:range) options = { allow_nil: true, only_integer: true, greater_than_or_equal_to: integer_range.begin } if integer_range.exclude_end? options[:less_than] = integer_range.end else options[:less_than_or_equal_to] = integer_range.end end validates name, :numericality, options end
json(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 99 def json(name, column_options = {}) null_validation(:json, name, column_options) end
null_validation(datatype, name, column_options)
click to toggle source
# File lib/generated_schema_validations/table.rb, line 38 def null_validation(datatype, name, column_options) @column_names.push(name.to_s) return if column_options[:null] != false @possible_belongs_to_not_null_columns.push(name.to_sym) if datatype.in?(%i[bigint integer uuid]) if datatype == :boolean validates name, :inclusion, in: [true, false], message: :blank else validates name, :presence end end
string(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 95 def string(name, column_options = {}) text(name, column_options) end
text(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 119 def text(name, column_options = {}) null_validation(:text, name, column_options) return if column_options[:array] return if column_options[:limit].blank? validates name, :length, allow_nil: true, maximum: column_options[:limit] end
to_s()
click to toggle source
# File lib/generated_schema_validations/table.rb, line 22 def to_s string = "\n" string += "def dbv_#{table_name}_validations\n" if @possible_belongs_to_not_null_columns.present? string += " belongs_to_presence_validations_for(#{@possible_belongs_to_not_null_columns.inspect})\n" end string += " belongs_to_uniqueness_validations_for(#{@unique_indexes.inspect})\n" if @unique_indexes.present? string += " uniqueness_validations_for(#{@unique_indexes.inspect})\n" if @unique_indexes.present? string += @validations.uniq.map { |v| " #{v}\n" }.join "#{string}end\n" end
uuid(name, column_options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 51 def uuid(name, column_options = {}) null_validation(:uuid, name, column_options) end
validates(attribute, validator, options = {})
click to toggle source
# File lib/generated_schema_validations/table.rb, line 34 def validates(attribute, validator, options = {}) @validations.push(Validation.new(attribute, validator, options)) end