diff options
author | wangjohn <wangjohn@mit.edu> | 2013-02-21 13:40:48 -0500 |
---|---|---|
committer | wangjohn <wangjohn@mit.edu> | 2013-03-19 12:23:20 -0400 |
commit | 3ee30ca44a6f965c2e9a60bcf84b45d9be726509 (patch) | |
tree | 2e4aee7523f6579db95300a7ccb19cada3d73c99 /activemodel/lib | |
parent | 7d659ae9cd52cc0f752c09341989eb453dc0c536 (diff) | |
download | rails-3ee30ca44a6f965c2e9a60bcf84b45d9be726509.tar.gz rails-3ee30ca44a6f965c2e9a60bcf84b45d9be726509.tar.bz2 rails-3ee30ca44a6f965c2e9a60bcf84b45d9be726509.zip |
The repair_validations helper was not working correctly before because
it only cleared the validations that created :validate callbacks. This
didn't include the validates created by validates_with, so I've added a
method to clear all validations.
Diffstat (limited to 'activemodel/lib')
-rw-r--r-- | activemodel/lib/active_model/validations.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/validations.rb b/activemodel/lib/active_model/validations.rb index 2db4a25f61..72e3cf310a 100644 --- a/activemodel/lib/active_model/validations.rb +++ b/activemodel/lib/active_model/validations.rb @@ -169,6 +169,49 @@ module ActiveModel _validators.values.flatten.uniq end + # Clears all of the validators and validations. + # + # Note that this will clear anything that is being used to validate + # the model for both the +validates_with+ and +validate+ methods. + # It clears the validators that are created with an invocation of + # +validates_with+ and the callbacks that are set by an invocation + # of +validate+. + # + # class Person + # include ActiveModel::Validations + # + # validates_with MyValidator + # validates_with OtherValidator, on: :create + # validates_with StrictValidator, strict: true + # validate :cannot_be_robot + # + # def cannot_be_robot + # errors.add(:base, 'A person cannot be a robot') if person_is_robot + # end + # end + # + # Person.validators + # # => [ + # # #<MyValidator:0x007fbff403e808 @options={}>, + # # #<OtherValidator:0x007fbff403d930 @options={on: :create}>, + # # #<StrictValidator:0x007fbff3204a30 @options={strict:true}> + # # ] + # + # If one runs Person.clear_validators! and then checks to see what + # validators this class has, you would obtain: + # + # Person.validators # => [] + # + # Also, the callback set by +validate :cannot_be_robot+ will be erased + # so that: + # + # Person._validate_callbacks.empty? # => true + # + def clear_validators! + reset_callbacks(:validate) + _validators.clear + end + # List all validators that are being used to validate a specific attribute. # # class Person |