Sha256: f06e461389dd11f357a0dbd0bf6305a7043afede1e544526304fe2eabc22344e
Contents?: true
Size: 1.31 KB
Versions: 11
Compression:
Stored size: 1.31 KB
Contents
module ActiveRecord module Validations module ClassMethods # Automatically validates the column against the schema definition # for nullability, format, and enumerations. Handles integers, floats, # enumerations, and string limits. # # Usage: validates_columns :severity, :name def validates_columns(*column_names) begin cols = columns_hash column_names.each do |name| col = cols[name.to_s] raise ArgumentError, "Cannot find column #{name}" unless col # test for nullability validates_presence_of(name) if !col.null # Test various known types. case col.type when :enum validates_inclusion_of name, :in => col.values, :allow_nil => true when :integer, :float validates_numericality_of name, :allow_nil => true when :string if col.limit validates_length_of name, :maximum => col.limit, :allow_nil => true end end end rescue ActiveRecord::StatementInvalid=>e raise e unless e.message.include?("42S02") # swallow the exception if its for a missing table end end end end end
Version data entries
11 entries across 11 versions & 3 rubygems