aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/persistence.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-09-10 21:10:01 +0100
committerJon Leighton <j@jonathanleighton.com>2011-09-13 00:01:58 +0100
commit50d395f96ea05da1e02459688e94bff5872c307b (patch)
treec3856d526d35477131bb0bde1285a80fbb07fc4e /activerecord/lib/active_record/persistence.rb
parent8667d3aeb64dd8dba463ace364534326411bb46c (diff)
downloadrails-50d395f96ea05da1e02459688e94bff5872c307b.tar.gz
rails-50d395f96ea05da1e02459688e94bff5872c307b.tar.bz2
rails-50d395f96ea05da1e02459688e94bff5872c307b.zip
Raise error when using write_attribute with a non-existent attribute.
Previously we would just silently write the attribute. This can lead to subtle bugs (for example, see the change in AutosaveAssociation where a through association would wrongly gain an attribute. Also, ensuring that we never gain any new attributes after initialization will allow me to reduce our dependence on method_missing.
Diffstat (limited to 'activerecord/lib/active_record/persistence.rb')
-rw-r--r--activerecord/lib/active_record/persistence.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb
index 2dac9ea0fb..5e65e46a7d 100644
--- a/activerecord/lib/active_record/persistence.rb
+++ b/activerecord/lib/active_record/persistence.rb
@@ -314,7 +314,7 @@ module ActiveRecord
new_id = self.class.unscoped.insert attributes_values
- self.id ||= new_id
+ self.id ||= new_id if self.class.primary_key
IdentityMap.add(self) if IdentityMap.enabled?
@new_record = false