Module: DataMapper::Validations::AutoValidations
- Included in:
- ClassMethods
- Defined in:
- lib/dm-validations/auto_validate.rb
Defined Under Namespace
Modules: ModelExtension
Instance Attribute Summary collapse
-
#disable_auto_validations ⇒ Object
readonly
TODO: why are there 3 entry points to this ivar? #disable_auto_validations, #disabled_auto_validations?, #auto_validations_disabled?.
Class Method Summary collapse
-
.generate_for_property(property) ⇒ Object
private
Auto-generate validations for a given property.
Instance Method Summary collapse
-
#disabled_auto_validations? ⇒ TrueClass, FalseClass
(also: #auto_validations_disabled?)
Checks whether auto validations are currently disabled (see
disable_auto_validations
method that takes a block). -
#without_auto_validations ⇒ Object
disables generation of validations for duration of given block.
Instance Attribute Details
#disable_auto_validations ⇒ Object (readonly)
TODO: why are there 3 entry points to this ivar? #disable_auto_validations, #disabled_auto_validations?, #auto_validations_disabled?
23 24 25 |
# File 'lib/dm-validations/auto_validate.rb', line 23 def disable_auto_validations @disable_auto_validations end |
Class Method Details
.generate_for_property(property) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Auto-generate validations for a given property. This will only occur if the option :auto_validation is either true or left undefined.
Triggers that generate validator creation
:required => true
Setting the option :required to true causes a
validates_presence_of validator to be automatically created on
the property
:length => 20
Setting the option :length causes a validates_length_of
validator to be automatically created on the property. If the
value is a Integer the validation will set :maximum => value
if the value is a Range the validation will set
:within => value
:format => :predefined / lambda / Proc
Setting the :format option causes a validates_format_of
validator to be automatically created on the property
:set => ["foo", "bar", "baz"]
Setting the :set option causes a validates_within
validator to be automatically created on the property
Integer type
Using a Integer type causes a validates_numericality_of
validator to be created for the property. integer_only
is set to true
BigDecimal or Float type
Using a Integer type causes a validates_numericality_of
validator to be created for the property. integer_only
is set to false, and precision/scale match the property
Messages
:messages => {..}
Setting :messages hash replaces standard error messages
with custom ones. For instance:
:messages => {:presence => "Field is required",
:format => "Field has invalid format"}
Hash keys are: :presence, :format, :length, :is_unique,
:is_number, :is_primitive
:message => "Some message"
It is just shortcut if only one validation option is set
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/dm-validations/auto_validate.rb', line 101 def self.generate_for_property(property) return if (property.model.disabled_auto_validations? || skip_auto_validation_for?(property)) # all auto-validations (aside from presence) should skip # validation when the value is nil opts = { :allow_nil => true } if property..key?(:validates) opts[:context] = property.[:validates] end infer_presence_validation_for(property, opts.dup) infer_length_validation_for(property, opts.dup) infer_format_validation_for(property, opts.dup) infer_uniqueness_validation_for(property, opts.dup) infer_within_validation_for(property, opts.dup) infer_type_validation_for(property, opts.dup) end |
Instance Method Details
#disabled_auto_validations? ⇒ TrueClass, FalseClass Also known as: auto_validations_disabled?
Checks whether auto validations are currently disabled (see disable_auto_validations
method that takes a block)
33 34 35 |
# File 'lib/dm-validations/auto_validate.rb', line 33 def disabled_auto_validations? @disable_auto_validations || false end |
#without_auto_validations ⇒ Object
disables generation of validations for duration of given block
44 45 46 47 48 49 |
# File 'lib/dm-validations/auto_validate.rb', line 44 def without_auto_validations previous, @disable_auto_validations = @disable_auto_validations, true yield ensure @disable_auto_validations = previous end |