Module: ActiveRecord::Validations::ClassMethods
- Defined in:
- lib/enum/validations.rb
Instance Method Summary collapse
-
#validates_columns(*column_names) ⇒ Object
Automatically validates the column against the schema definition for nullability, format, and enumerations.
Instance Method Details
#validates_columns(*column_names) ⇒ Object
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
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/enum/validations.rb', line 10 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.limit, :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..include?("42S02") # swallow the exception if its for a missing table end end |