Is called before valid? or valid_for_*?
class Person include Validatable before_validation do self.name = "default name" end attr_accessor :name end
# File lib/macros.rb, line 279 def before_validation(&block) before_validations << block end
Validates the specified attributes.
class Person include Validatable validates_presence_of :name attr_accessor :name end class PersonPresenter include Validatable include_errors_from :person, :map => { :name => :namen }, :if => lambda { not person.nil? } attr_accessor :person def initialize(person) @person = person end end presenter = PersonPresenter.new(Person.new) presenter.valid? #=> false presenter.errors.on(:namen) #=> "can't be blank"
The person attribute will be validated. If person is invalid the errors will be added to the PersonPresenter errors collection.
Configuration options:
* map - A hash that maps attributes of the child to attributes of the parent. * if - A block that when executed must return true of the validation will not occur.
# File lib/macros.rb, line 257 def include_errors_from(attribute_to_validate, options = {}) children_to_validate << ChildValidation.new(attribute_to_validate, options[:map] || {}, options[:if] || lambda { true }) end
Includes all the validations that are defined on the attribute.
class Person include Validatable validates_presence_of :name end class PersonPresenter include Validatable include_validataions_from :person attr_accessor :person def name person.name end def initialize(person) @person = person end end presenter = PersonPresenter.new(Person.new) presenter.valid? #=> false presenter.errors.on(:name) #=> "can't be blank"
The name attribute whose validations should be added.
# File lib/macros.rb, line 223 def include_validations_from(attribute_to_validate, options = {}) validations_to_include << IncludedValidation.new(attribute_to_validate) end
Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement). Example:
class Person include Validatable validates_acceptance_of :terms_of_service validates_acceptance_of :eula, :message => "must be abided" end
Configuration options:
* after_validate - A block that executes following the run of a validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * group - The group that this validation belongs to. A validation can belong to multiple groups
# File lib/macros.rb, line 118 def validates_acceptance_of(*args) add_validations(args, ValidatesAcceptanceOf) end
Encapsulates the pattern of wanting to validate a password or email address field with a confirmation. Example:
Class: class PersonPresenter include Validatable validates_confirmation_of :user_name, :password validates_confirmation_of :email_address, :message => "should match confirmation" end View: <%= password_field "person", "password" %> <%= password_field "person", "password_confirmation" %>
Configuration options:
* after_validate - A block that executes following the run of a validation * case_sensitive - Whether or not to apply case-sensitivity on the comparison. Defaults to true. * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * group - The group that this validation belongs to. A validation can belong to multiple groups
# File lib/macros.rb, line 146 def validates_confirmation_of(*args) add_validations(args, ValidatesConfirmationOf) end
Validates that the logic evaluates to true
class Address include Validatable validates_each :zip_code, :logic => lambda { errors.add(:zip_code, "is not valid") if ZipCodeService.allows(zip_code) } end
The logic option is required.
Configuration options:
* after_validate - A block that executes following the run of a validation * group - The group that this validation belongs to. A validation can belong to multiple groups * if - A block that when executed must return true of the validation will not occur * level - The level at which the validation should occur * logic - A block that executes to perform the validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies
# File lib/macros.rb, line 23 def validates_each(*args) add_validations(args, ValidatesEach) end
Validates whether the value of the specified attribute is of the correct form by matching it against the regular expression provided.
class Person include Validatable validates_format_of :first_name, :with => /[ A-Za-z]/ end
A regular expression must be provided or else an exception will be raised.
Configuration options:
* after_validate - A block that executes following the run of a validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * with - The regular expression used to validate the format * group - The group that this validation belongs to. A validation can belong to multiple groups
# File lib/macros.rb, line 48 def validates_format_of(*args) add_validations(args, ValidatesFormatOf) end
Validates that the specified attribute matches the length restrictions supplied.
class Person include Validatable validates_length_of :first_name, :maximum=>30 validates_length_of :last_name, :minimum=>30 end
Configuration options:
* after_validate - A block that executes following the run of a validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * minimum - The minimum size of the attribute * maximum - The maximum size of the attribute * is - The size the attribute must be * within - A range that the size of the attribute must fall within * group - The group that this validation belongs to. A validation can belong to multiple groups
# File lib/macros.rb, line 74 def validates_length_of(*args) add_validations(args, ValidatesLengthOf) end
Validates that the specified attribute is numeric.
class Person include Validatable validates_numericality_of :age end
Configuration options:
* after_validate - A block that executes following the run of a validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * group - The group that this validation belongs to. A validation can belong to multiple groups * only_integer - Whether the attribute must be an integer (default is false)
# File lib/macros.rb, line 96 def validates_numericality_of(*args) add_validations(args, ValidatesNumericalityOf) end
Validates that the specified attributes are not nil or an empty string
class Person include Validatable validates_presence_of :first_name end
The first_name attribute must be in the object and it cannot be nil or empty.
Configuration options:
* after_validate - A block that executes following the run of a validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * group - The group that this validation belongs to. A validation can belong to multiple groups
# File lib/macros.rb, line 169 def validates_presence_of(*args) add_validations(args, ValidatesPresenceOf) end
Validates that the logic evaluates to true
class Person include Validatable validates_true_for :first_name, :logic => lambda { first_name == 'Jamie' } end
The logic option is required.
Configuration options:
* after_validate - A block that executes following the run of a validation * message - The message to add to the errors collection when the validation fails * times - The number of times the validation applies * level - The level at which the validation should occur * if - A block that when executed must return true of the validation will not occur * group - The group that this validation belongs to. A validation can belong to multiple groups * logic - A block that executes to perform the validation
# File lib/macros.rb, line 193 def validates_true_for(*args) add_validations(args, ValidatesTrueFor) end
Generated with the Darkfish Rdoc Generator 2.