module Ardm::Ar::Validations::ClassMethods
Public Instance Methods
validates_belongs_to(*fields)
click to toggle source
# File lib/ardm/ar/validations.rb, line 40 def validates_belongs_to(*fields) fields, options = Ardm::Ar::Validations.extract_options(fields) validates *fields, presence: options end
validates_length_of(*fields)
click to toggle source
# File lib/ardm/ar/validations.rb, line 62 def validates_length_of(*fields) fields, options = Ardm::Ar::Validations.extract_options(fields, :in, :within, :maximum, :minimum, :is) validates *fields, length: options end
validates_presence_of(*fields)
click to toggle source
# File lib/ardm/ar/validations.rb, line 45 def validates_presence_of(*fields) fields, options = Ardm::Ar::Validations.extract_options(fields) boolean_fields, non_boolean_fields = fields.partition { |f| self.properties[f.to_sym].is_a?(Ardm::Property::Boolean) } if non_boolean_fields.any? validates(*non_boolean_fields, presence: options) end if boolean_fields.any? if options.any? $stderr.puts "validates_presence_of options ignored: #{options.inspect}" end validates(*boolean_fields, inclusion: {in: [true, false]}) end end
validates_uniqueness_of(*fields)
click to toggle source
# File lib/ardm/ar/validations.rb, line 67 def validates_uniqueness_of(*fields) fields, options = Ardm::Ar::Validations.extract_options(fields, :scope) fields = fields.map do |field| if property = properties[field] property.field elsif assoc = reflect_on_association(field) assoc.foreign_key else field end end if options[:scope] options[:scope] = Array(options[:scope]).map do |scope| assoc = reflect_on_association(scope) assoc ? assoc.foreign_key : scope end end validates *fields, uniqueness: options end
validates_with_block(*args, &block)
click to toggle source
# File lib/ardm/ar/validations.rb, line 116 def validates_with_block(*args, &block) options = args.extract_options! attribute = args.shift validate(options) do |_| is_valid, message = instance_eval(&block) unless is_valid attribute ||= :base if attribute.to_sym == :base raise "message is blank #{args.inspect} #{self.inspect} #{block.inspect}" if message.blank? end errors.add(attribute, message) end end end
validates_with_method(*fields)
click to toggle source
Possible formats:
validates_with_method
:attr, :method_name validates_with_method
:attr, method: :method_name validates_with_method
:method_name, options: “here”
# File lib/ardm/ar/validations.rb, line 99 def validates_with_method(*fields) fields, options = Ardm::Ar::Validations.extract_options(fields, :method) # validates_with_method :attr, :method_name att, meth = *fields # validates_with_method :attr, method: :method_name meth = options[:method] if options[:method] # validates_with_method :method_name att, meth = :base, att if !meth validates_with_block(att) do self.send(meth) end end
validates_within(*fields)
click to toggle source
# File lib/ardm/ar/validations.rb, line 89 def validates_within(*fields) fields, options = Ardm::Ar::Validations.extract_options(fields, :in) validates *fields, inclusion: options end