diff options
author | Vince Puzzella <vincepuz@gmail.com> | 2014-01-18 11:34:38 -0500 |
---|---|---|
committer | Vince Puzzella <vincepuz@gmail.com> | 2014-01-27 03:26:27 -0500 |
commit | 8855163bdbce23fa539be2c1ef2a49f1aabc6458 (patch) | |
tree | 3429079077006499431452eaadc42737d28f6997 /activemodel/lib | |
parent | 5540dfccd88c809c2922f21f4c1558465bce26dd (diff) | |
download | rails-8855163bdbce23fa539be2c1ef2a49f1aabc6458.tar.gz rails-8855163bdbce23fa539be2c1ef2a49f1aabc6458.tar.bz2 rails-8855163bdbce23fa539be2c1ef2a49f1aabc6458.zip |
Ability to specify multiple contexts when defining a validation.
Example:
validates_presence_of :name, on: [:update, :custom_validation_context]
Diffstat (limited to 'activemodel/lib')
-rw-r--r-- | activemodel/lib/active_model/validations.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/activemodel/lib/active_model/validations.rb b/activemodel/lib/active_model/validations.rb index 08928a713d..8e76edf945 100644 --- a/activemodel/lib/active_model/validations.rb +++ b/activemodel/lib/active_model/validations.rb @@ -66,8 +66,10 @@ module ActiveModel # end # # Options: - # * <tt>:on</tt> - Specifies the context where this validation is active - # (e.g. <tt>on: :create</tt> or <tt>on: :custom_validation_context</tt>) + # * <tt>:on</tt> - Specifies the contexts where this validation is active. + # You can pass a symbol or an array of symbols. + # (e.g. <tt>on: :create</tt> or <tt>on: :custom_validation_context</tt> or + # <tt>on: [:create, :custom_validation_context]</tt>) # * <tt>:allow_nil</tt> - Skip validation if attribute is +nil+. # * <tt>:allow_blank</tt> - Skip validation if attribute is blank. # * <tt>:if</tt> - Specifies a method, proc or string to call to determine @@ -124,8 +126,10 @@ module ActiveModel # end # # Options: - # * <tt>:on</tt> - Specifies the context where this validation is active - # (e.g. <tt>on: :create</tt> or <tt>on: :custom_validation_context</tt>) + # * <tt>:on</tt> - Specifies the contexts where this validation is active. + # You can pass a symbol or an array of symbols. + # (e.g. <tt>on: :create</tt> or <tt>on: :custom_validation_context</tt> or + # <tt>on: [:create, :custom_validation_context]</tt>) # * <tt>:if</tt> - Specifies a method, proc or string to call to determine # if the validation should occur (e.g. <tt>if: :allow_validation</tt>, # or <tt>if: Proc.new { |user| user.signup_step > 2 }</tt>). The method, @@ -141,7 +145,7 @@ module ActiveModel options = options.dup options[:if] = Array(options[:if]) options[:if].unshift lambda { |o| - o.validation_context == options[:on] + Array(options[:on]).include?(o.validation_context) } end args << options |