aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-01-16 19:20:37 +0000
committerAaron Patterson <aaron.patterson@gmail.com>2011-01-16 13:43:53 -0800
commitbf24fe810c0591619ac01cc88d8a40423895d9d7 (patch)
tree6d952e007713e5a7147a203b1648e3acb9f36c18 /activerecord/lib/active_record/associations
parent3ef693724c4719564361b3f48f8977b795c935e0 (diff)
downloadrails-bf24fe810c0591619ac01cc88d8a40423895d9d7.tar.gz
rails-bf24fe810c0591619ac01cc88d8a40423895d9d7.tar.bz2
rails-bf24fe810c0591619ac01cc88d8a40423895d9d7.zip
belongs_to records should be initialized within the association scope
Diffstat (limited to 'activerecord/lib/active_record/associations')
-rw-r--r--activerecord/lib/active_record/associations/belongs_to_association.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations/belongs_to_association.rb b/activerecord/lib/active_record/associations/belongs_to_association.rb
index d311b0c572..1abea8d831 100644
--- a/activerecord/lib/active_record/associations/belongs_to_association.rb
+++ b/activerecord/lib/active_record/associations/belongs_to_association.rb
@@ -3,7 +3,7 @@ module ActiveRecord
module Associations
class BelongsToAssociation < AssociationProxy #:nodoc:
def create(attributes = {})
- replace(@reflection.create_association(attributes))
+ new_record(:create_association, attributes)
end
def create!(attributes = {})
@@ -11,7 +11,7 @@ module ActiveRecord
end
def build(attributes = {})
- replace(@reflection.build_association(attributes))
+ new_record(:build_association, attributes)
end
def replace(record)
@@ -34,6 +34,12 @@ module ActiveRecord
end
private
+ def new_record(method, attributes)
+ record = scoped.scoping { @reflection.send(method, attributes) }
+ replace(record)
+ record
+ end
+
def update_counters(record)
counter_cache_name = @reflection.counter_cache_column