diff options
author | Jon Leighton <j@jonathanleighton.com> | 2011-01-16 19:20:37 +0000 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-01-16 13:43:53 -0800 |
commit | bf24fe810c0591619ac01cc88d8a40423895d9d7 (patch) | |
tree | 6d952e007713e5a7147a203b1648e3acb9f36c18 /activerecord/lib/active_record/associations | |
parent | 3ef693724c4719564361b3f48f8977b795c935e0 (diff) | |
download | rails-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.rb | 10 |
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 |