diff options
author | Prem Sichanugrist <s@sikac.hu> | 2012-10-02 21:45:09 -0400 |
---|---|---|
committer | Prem Sichanugrist <s@sikac.hu> | 2012-10-02 22:09:06 -0400 |
commit | 4f9b59dba0fe9d90f53417f0d4f1bc63679d556a (patch) | |
tree | 71490452c6ee41f9fd06ac90b5d4d3c8091c3073 /activemodel/lib/active_model | |
parent | 0a507925cfc54246dc7d329936f60f8f410c38b6 (diff) | |
download | rails-4f9b59dba0fe9d90f53417f0d4f1bc63679d556a.tar.gz rails-4f9b59dba0fe9d90f53417f0d4f1bc63679d556a.tar.bz2 rails-4f9b59dba0fe9d90f53417f0d4f1bc63679d556a.zip |
Make `.validators_on` accept `:kind` option
This will filter out the validators on a particular attribute based on
its kind.
Diffstat (limited to 'activemodel/lib/active_model')
-rw-r--r-- | activemodel/lib/active_model/validations.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/validations.rb b/activemodel/lib/active_model/validations.rb index 4762f39044..5a3225a7e6 100644 --- a/activemodel/lib/active_model/validations.rb +++ b/activemodel/lib/active_model/validations.rb @@ -187,10 +187,21 @@ module ActiveModel # # #<ActiveModel::Validations::PresenceValidator:0x007fe604914e60 @attributes=[:name], @options={}>, # # #<ActiveModel::Validations::InclusionValidator:0x007fe603bb8780 @attributes=[:age], @options={:in=>0..99}> # # ] + # + # You can also pass a +:kind+ option to filter the validators based on their kind. + # + # Person.validators_on(:name, kind: :presence) + # # => [#<ActiveModel::Validations::PresenceValidator:0x007fe604914e60 @attributes=[:name], @options={}>] def validators_on(*attributes) + options = attributes.extract_options! + attributes.map do |attribute| _validators[attribute.to_sym] - end.flatten + end.flatten.tap do |validators| + if options[:kind] + validators.select! { |validator| validator.kind == options[:kind] } + end + end end # Returns +true+ if +attribute+ is an attribute method, +false+ otherwise. |