aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorknapo <knapo@knapo.net>2011-05-11 17:17:42 +0200
committerknapo <knapo@knapo.net>2011-05-11 17:17:42 +0200
commitbb498a574980eb281f9f5fd5236f584bf23a829d (patch)
tree6f0ac7821c1955e6c6e06ab3ce439ee8b29ec3cd /activerecord
parent8ec1f30cfdea6c80db1434a9f96c28bb119689d0 (diff)
downloadrails-bb498a574980eb281f9f5fd5236f584bf23a829d.tar.gz
rails-bb498a574980eb281f9f5fd5236f584bf23a829d.tar.bz2
rails-bb498a574980eb281f9f5fd5236f584bf23a829d.zip
Fix assigning protected attributes by attributes=
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/base.rb7
-rw-r--r--activerecord/test/cases/base_test.rb9
2 files changed, 10 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index b2e058d746..e1bf2ccc8a 100644
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1652,11 +1652,10 @@ MSG
return unless new_attributes.is_a?(Hash)
- guard_protected_attributes ||= true
- if guard_protected_attributes
- assign_attributes(new_attributes)
- else
+ if guard_protected_attributes == false
assign_attributes(new_attributes, :without_protection => true)
+ else
+ assign_attributes(new_attributes)
end
end
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index fb4eacb632..9bc04ed29c 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -45,6 +45,10 @@ class ReadonlyTitlePost < Post
attr_readonly :title
end
+class ProtectedTitlePost < Post
+ attr_protected :title
+end
+
class Weird < ActiveRecord::Base; end
class Boolean < ActiveRecord::Base; end
@@ -491,8 +495,9 @@ class BasicsTest < ActiveRecord::TestCase
def test_attributes_guard_protected_attributes_is_deprecated
attributes = { "title" => "An amazing title" }
- topic = Topic.new
- assert_deprecated { topic.send(:attributes=, attributes, false) }
+ post = ProtectedTitlePost.new
+ assert_deprecated { post.send(:attributes=, attributes, false) }
+ assert_equal "An amazing title", post.title
end
def test_multiparameter_attributes_on_date