提交 4280b20c 编写于 作者: J José Valim

Merge pull request #4494 from Dreamfa11/patch-0

Validates method should not change options argument
......@@ -59,7 +59,7 @@ module ClassMethods
#
# 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 +70,7 @@ module ClassMethods
# 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
......@@ -80,7 +80,7 @@ module ClassMethods
# validates :password, :presence => true, :confirmation => true, :if => :password_required?
#
def validates(*attributes)
defaults = attributes.extract_options!
defaults = attributes.extract_options!.dup
validations = defaults.slice!(*_validates_default_keys)
raise ArgumentError, "You need to supply at least one attribute" if attributes.empty?
......@@ -102,7 +102,7 @@ def validates(*attributes)
end
# This method is used to define validation that can not be corrected by end user
# and is considered exceptional.
# 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
......
......@@ -330,4 +330,10 @@ def test_validates_with_bang
Topic.new.valid?
end
end
def test_does_not_modify_options_argument
options = {:presence => true}
Topic.validates :title, options
assert_equal({:presence => true}, options)
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册