Module: DataMapper::Validate
- Extended by:
- Chainable
- Includes:
- Context
- Defined in:
- lib/dm-validations.rb,
lib/dm-validations/formats/url.rb,
lib/dm-validations/auto_validate.rb,
lib/dm-validations/formats/email.rb,
lib/dm-validations/support/context.rb,
lib/dm-validations/validation_errors.rb,
lib/dm-validations/contextual_validators.rb,
lib/dm-validations/validators/block_validator.rb,
lib/dm-validations/validators/format_validator.rb,
lib/dm-validations/validators/length_validator.rb,
lib/dm-validations/validators/method_validator.rb,
lib/dm-validations/validators/within_validator.rb,
lib/dm-validations/validators/generic_validator.rb,
lib/dm-validations/validators/numeric_validator.rb,
lib/dm-validations/validators/primitive_validator.rb,
lib/dm-validations/validators/acceptance_validator.rb,
lib/dm-validations/validators/uniqueness_validator.rb,
lib/dm-validations/validators/absent_field_validator.rb,
lib/dm-validations/validators/confirmation_validator.rb,
lib/dm-validations/validators/required_field_validator.rb
Defined Under Namespace
Modules: AutoValidate, ClassMethods, Context, Format, ValidatesAbsent, ValidatesFormat, ValidatesIsAccepted, ValidatesIsConfirmed, ValidatesIsNumber, ValidatesIsPrimitive, ValidatesIsUnique, ValidatesLength, ValidatesPresent, ValidatesWithBlock, ValidatesWithMethod, ValidatesWithin Classes: AbsentFieldValidator, AcceptanceValidator, ConfirmationValidator, ContextualValidators, FormatValidator, GenericValidator, LengthValidator, MethodValidator, NumericValidator, PrimitiveValidator, RequiredFieldValidator, UniquenessValidator, ValidationErrors, WithinValidator
Class Method Summary collapse
Instance Method Summary collapse
-
#all_valid?(context = :default) ⇒ Boolean
Begin a recursive walk of the model checking validity.
-
#errors ⇒ Object
Return the ValidationErrors.
-
#recursive_valid?(target, context, state) ⇒ Boolean
Do recursive validity checking.
-
#valid?(context = :default) ⇒ Boolean
Check if a resource is valid in a given context.
-
#valid_for_default? ⇒ Boolean
Alias for valid?(:default).
-
#validatable? ⇒ Boolean
Mark this resource as validatable.
- #validation_association_keys(name) ⇒ Object
-
#validation_property(field_name) ⇒ Object
Get the corresponding Resource property, if it exists.
- #validation_property_value(name) ⇒ Object
Methods included from Context
Class Method Details
.included(model) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/dm-validations.rb', line 29 def self.included(model) model.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.create(attributes = {}, *args) resource = new(attributes) resource.save(*args) resource end RUBY # models that are non DM resources must get .validators # and other methods, too model.extend ClassMethods end |
Instance Method Details
#all_valid?(context = :default) ⇒ Boolean
Begin a recursive walk of the model checking validity
94 95 96 |
# File 'lib/dm-validations.rb', line 94 def all_valid?(context = :default) recursive_valid?(self, context, true) end |
#errors ⇒ Object
Return the ValidationErrors
67 68 69 |
# File 'lib/dm-validations.rb', line 67 def errors @errors ||= ValidationErrors.new(self) end |
#recursive_valid?(target, context, state) ⇒ Boolean
Do recursive validity checking
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/dm-validations.rb', line 100 def recursive_valid?(target, context, state) valid = state target.instance_variables.each do |ivar| ivar_value = target.instance_variable_get(ivar) if ivar_value.validatable? valid = valid && recursive_valid?(ivar_value, context, valid) elsif ivar_value.respond_to?(:each) ivar_value.each do |item| if item.validatable? valid = valid && recursive_valid?(item, context, valid) end end end end return valid && target.valid? end |
#valid?(context = :default) ⇒ Boolean
Check if a resource is valid in a given context
87 88 89 90 |
# File 'lib/dm-validations.rb', line 87 def valid?(context = :default) klass = respond_to?(:model) ? model : self.class klass.validators.execute(context, self) end |
#valid_for_default? ⇒ Boolean
Alias for valid?(:default)
81 82 83 |
# File 'lib/dm-validations.rb', line 81 def valid_for_default? valid?(:default) end |
#validatable? ⇒ Boolean
Mark this resource as validatable. When we validate associations of a resource we can check if they respond to validatable? before trying to recursivly validate them
75 76 77 |
# File 'lib/dm-validations.rb', line 75 def validatable? true end |
#validation_association_keys(name) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/dm-validations.rb', line 131 def validation_association_keys(name) if model.relationships.has_key?(name) result = [] relation = model.relationships[name] relation.child_key.each do |key| result << key.name end return result end nil end |
#validation_property(field_name) ⇒ Object
Get the corresponding Resource property, if it exists.
Note: DataMapper validations can be used on non-DataMapper resources. In such cases, the return value will be nil.
125 126 127 128 129 |
# File 'lib/dm-validations.rb', line 125 def validation_property(field_name) if respond_to?(:model) && (properties = model.properties(repository.name)) && properties.named?(field_name) properties[field_name] end end |
#validation_property_value(name) ⇒ Object
117 118 119 |
# File 'lib/dm-validations.rb', line 117 def validation_property_value(name) respond_to?(name, true) ? send(name) : nil end |