Module: Gluttonberg::Content::Validations
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/gluttonberg/content/validations.rb
Overview
A mixin which allows any arbitrary model to have default validations
Class Method Summary collapse
Instance Method Summary collapse
-
#decimal_values ⇒ Object
it validates all decimal columns values - database schema.
-
#integer_values ⇒ Object
it validates all integer columns values - database schema.
-
#max_field_length ⇒ Object
it validates all columns values using max limit from database schema.
Class Method Details
.setup ⇒ Object
7 8 9 |
# File 'lib/gluttonberg/content/validations.rb', line 7 def self.setup ::ActiveRecord::Base.send :include, Gluttonberg::Content::Validations end |
Instance Method Details
#decimal_values ⇒ Object
it validates all decimal columns values - database schema
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/gluttonberg/content/validations.rb', line 41 def decimal_values self.class.columns.each do |column| if column.type == :decimal && !column.precision.blank? && !column.scale.blank? before_type_cast = :"#{column.name}_before_type_cast" raw_value = self.send(before_type_cast) if self.respond_to?(before_type_cast) raw_value ||= self.send(column.name) unless raw_value.blank? unless raw_value.to_s =~ /^\A[+-]?\d{1,#{column.precision}}(\.?\d{0,#{column.scale}})?$/ errors.add(column.name, "is not a decimal number") end end end end end |
#integer_values ⇒ Object
it validates all integer columns values - database schema
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gluttonberg/content/validations.rb', line 24 def integer_values self.class.columns.each do |column| if column.type == :integer before_type_cast = :"#{column.name}_before_type_cast" raw_value = self.send(before_type_cast) if self.respond_to?(before_type_cast) raw_value ||= self.send(column.name) unless raw_value.blank? raw_value = raw_value.to_i if raw_value.to_s =~ /\A[+-]?\d+\Z/ unless raw_value.is_a? Integer errors.add(column.name, "is not an integer number") end end end end end |
#max_field_length ⇒ Object
it validates all columns values using max limit from database schema
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/gluttonberg/content/validations.rb', line 12 def max_field_length self.class.columns.each do |column| if column.type == :string && !column.limit.blank? val = self.send(column.name) if !val.blank? and val.length > column.limit errors.add(column.name, "is too long (maximum is #{column.limit} characters)") end end end end |