aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-01-16 19:47:58 +0000
committerAaron Patterson <aaron.patterson@gmail.com>2011-01-16 13:43:53 -0800
commitf1a15c2197d5da8e0c38bd59aa19973c9cfc0a01 (patch)
treea492aca08aa10e5e74dabaa168f44a19b48a61d2 /activerecord/lib/active_record/associations
parent115eedbb410c52364e3353266316c218a29e5998 (diff)
downloadrails-f1a15c2197d5da8e0c38bd59aa19973c9cfc0a01.tar.gz
rails-f1a15c2197d5da8e0c38bd59aa19973c9cfc0a01.tar.bz2
rails-f1a15c2197d5da8e0c38bd59aa19973c9cfc0a01.zip
Abstract a bit more into SingularAssociation
Diffstat (limited to 'activerecord/lib/active_record/associations')
-rw-r--r--activerecord/lib/active_record/associations/belongs_to_association.rb3
-rw-r--r--activerecord/lib/active_record/associations/has_one_association.rb3
-rw-r--r--activerecord/lib/active_record/associations/singular_association.rb6
3 files changed, 8 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/associations/belongs_to_association.rb b/activerecord/lib/active_record/associations/belongs_to_association.rb
index 11e16de738..271112bbe1 100644
--- a/activerecord/lib/active_record/associations/belongs_to_association.rb
+++ b/activerecord/lib/active_record/associations/belongs_to_association.rb
@@ -3,8 +3,7 @@ module ActiveRecord
module Associations
class BelongsToAssociation < SingularAssociation #:nodoc:
def replace(record)
- record = record.target if AssociationProxy === record
- raise_on_type_mismatch(record) if record
+ record = check_record(record)
update_counters(record)
replace_keys(record)
diff --git a/activerecord/lib/active_record/associations/has_one_association.rb b/activerecord/lib/active_record/associations/has_one_association.rb
index 1b366b74b6..892a8b5bfb 100644
--- a/activerecord/lib/active_record/associations/has_one_association.rb
+++ b/activerecord/lib/active_record/associations/has_one_association.rb
@@ -3,8 +3,7 @@ module ActiveRecord
module Associations
class HasOneAssociation < SingularAssociation #:nodoc:
def replace(record, save = true)
- record = record.target if AssociationProxy === record
- raise_on_type_mismatch(record) unless record.nil?
+ record = check_record(record)
load_target
@reflection.klass.transaction do
diff --git a/activerecord/lib/active_record/associations/singular_association.rb b/activerecord/lib/active_record/associations/singular_association.rb
index 023f7caf68..4b457bd881 100644
--- a/activerecord/lib/active_record/associations/singular_association.rb
+++ b/activerecord/lib/active_record/associations/singular_association.rb
@@ -26,6 +26,12 @@ module ActiveRecord
def set_new_record(record)
replace(record)
end
+
+ def check_record(record)
+ record = record.target if AssociationProxy === record
+ raise_on_type_mismatch(record) if record
+ record
+ end
end
end
end