diff options
| author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-02-01 11:28:31 -0200 | 
|---|---|---|
| committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-02-01 11:55:07 -0200 | 
| commit | 91f8cf22647e2e102c0897e88faec049f606843f (patch) | |
| tree | 87985a8d428113772db21226f77040e7f5e0a83c /activemodel | |
| parent | 1c5bd8a33dd7002c8664e587f968830c1bce3ff8 (diff) | |
| download | rails-91f8cf22647e2e102c0897e88faec049f606843f.tar.gz rails-91f8cf22647e2e102c0897e88faec049f606843f.tar.bz2 rails-91f8cf22647e2e102c0897e88faec049f606843f.zip  | |
Generate strict validation error messages with attribute name
Backported from master.
Diffstat (limited to 'activemodel')
| -rw-r--r-- | activemodel/lib/active_model/errors.rb | 2 | ||||
| -rw-r--r-- | activemodel/lib/active_model/validations/validates.rb | 17 | ||||
| -rw-r--r-- | activemodel/test/cases/validations_test.rb | 11 | 
3 files changed, 19 insertions, 11 deletions
diff --git a/activemodel/lib/active_model/errors.rb b/activemodel/lib/active_model/errors.rb index 80621cd7da..00bd68512b 100644 --- a/activemodel/lib/active_model/errors.rb +++ b/activemodel/lib/active_model/errors.rb @@ -233,7 +233,7 @@ module ActiveModel      def add(attribute, message = nil, options = {})        message = normalize_message(attribute, message, options)        if options[:strict] -        raise ActiveModel::StrictValidationFailed,  message +        raise ActiveModel::StrictValidationFailed, full_message(attribute, message)        end        self[attribute] << message diff --git a/activemodel/lib/active_model/validations/validates.rb b/activemodel/lib/active_model/validations/validates.rb index 8e09f6ac35..3e70b5e51b 100644 --- a/activemodel/lib/active_model/validations/validates.rb +++ b/activemodel/lib/active_model/validations/validates.rb @@ -1,7 +1,6 @@  require 'active_support/core_ext/hash/slice'  module ActiveModel -    # == Active Model validates method    module Validations      module ClassMethods @@ -59,7 +58,7 @@ module ActiveModel        #        #   validates :name, :'film/title' => true        # -      # The validators hash can also handle regular expressions, ranges,  +      # The validators hash can also handle regular expressions, ranges,        # arrays and strings in shortcut form, e.g.        #        #   validates :email, :format => /@/ @@ -70,7 +69,7 @@ module ActiveModel        # validator's initializer as +options[:in]+ while other types including        # regular expressions and strings are passed as +options[:with]+        # -      # Finally, the options +:if+, +:unless+, +:on+, +:allow_blank+, +:allow_nil+ and +:strict+  +      # Finally, the options +:if+, +:unless+, +:on+, +:allow_blank+, +:allow_nil+ and +:strict+        # can be given to one specific validator, as a hash:        #        #   validates :password, :presence => { :if => :password_required? }, :confirmation => true @@ -101,11 +100,11 @@ module ActiveModel          end        end -      # This method is used to define validation that can not be corrected by end user -      # and is considered exceptional.  -      # So each validator defined with bang or <tt>:strict</tt> option set to <tt>true</tt> -      # will always raise <tt>ActiveModel::InternalValidationFailed</tt> instead of adding error -      # when validation fails +      # This method is used to define validation that cannot be corrected by end +      # user and is considered exceptional. So each validator defined with bang +      # or <tt>:strict</tt> option set to <tt>true</tt> will always raise +      # <tt>ActiveModel::StrictValidationFailed</tt> instead of adding error +      # when validation fails.        # See <tt>validates</tt> for more information about validation itself.        def validates!(*attributes)          options = attributes.extract_options! @@ -118,7 +117,7 @@ module ActiveModel        # When creating custom validators, it might be useful to be able to specify        # additional default keys. This can be done by overwriting this method.        def _validates_default_keys -        [ :if, :unless, :on, :allow_blank, :allow_nil , :strict] +        [:if, :unless, :on, :allow_blank, :allow_nil , :strict]        end        def _parse_validates_options(options) #:nodoc: diff --git a/activemodel/test/cases/validations_test.rb b/activemodel/test/cases/validations_test.rb index 2f4376bd41..1941031e3c 100644 --- a/activemodel/test/cases/validations_test.rb +++ b/activemodel/test/cases/validations_test.rb @@ -311,7 +311,7 @@ class ValidationsTest < ActiveModel::TestCase    end    def test_strict_validation_particular_validator -    Topic.validates :title,  :presence => {:strict => true} +    Topic.validates :title,  :presence => { :strict => true }      assert_raises ActiveModel::StrictValidationFailed do        Topic.new.valid?      end @@ -330,4 +330,13 @@ class ValidationsTest < ActiveModel::TestCase        Topic.new.valid?      end    end + +  def test_strict_validation_error_message +    Topic.validates :title, :strict => true, :presence => true + +    exception = assert_raises(ActiveModel::StrictValidationFailed) do +      Topic.new.valid? +    end +    assert_equal "Title can't be blank", exception.message +  end  end  | 
