aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordreamfall <amarant.st@gmail.com>2012-01-17 13:18:58 +0300
committerdreamfall <amarant.st@gmail.com>2012-01-17 13:18:58 +0300
commite84998cc212c6c96c279ebd41619f51054f5642f (patch)
tree50166de246f6060b8ed83dc121f60ebc3b1cdf94
parent5f8274efe128ffeec8fa3179460f5167a078f007 (diff)
downloadrails-e84998cc212c6c96c279ebd41619f51054f5642f.tar.gz
rails-e84998cc212c6c96c279ebd41619f51054f5642f.tar.bz2
rails-e84998cc212c6c96c279ebd41619f51054f5642f.zip
validates method should not change options argument
-rw-r--r--activemodel/lib/active_model/validations/validates.rb2
-rw-r--r--activemodel/test/cases/validations_test.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/validations/validates.rb b/activemodel/lib/active_model/validations/validates.rb
index 8e09f6ac35..0e6b349e94 100644
--- a/activemodel/lib/active_model/validations/validates.rb
+++ b/activemodel/lib/active_model/validations/validates.rb
@@ -80,7 +80,7 @@ module ActiveModel
# 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?
diff --git a/activemodel/test/cases/validations_test.rb b/activemodel/test/cases/validations_test.rb
index 2f4376bd41..ed4d8fcdca 100644
--- a/activemodel/test/cases/validations_test.rb
+++ b/activemodel/test/cases/validations_test.rb
@@ -330,4 +330,10 @@ class ValidationsTest < ActiveModel::TestCase
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