aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2011-01-07 11:28:11 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2011-01-07 11:28:11 -0800
commit839f3bf6822ed3698df1e606c4215d650312f33e (patch)
tree1f53277c77c8b64679f9bfda1e184a0c4ce91730 /activerecord/lib/active_record/associations.rb
parent8a1c5337808c53c5e9d2d842a09a90599c497e89 (diff)
downloadrails-839f3bf6822ed3698df1e606c4215d650312f33e.tar.gz
rails-839f3bf6822ed3698df1e606c4215d650312f33e.tar.bz2
rails-839f3bf6822ed3698df1e606c4215d650312f33e.zip
just use a hash for doing association caching
Diffstat (limited to 'activerecord/lib/active_record/associations.rb')
-rw-r--r--activerecord/lib/active_record/associations.rb14
1 files changed, 7 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index f6a7fd3ca0..78652ba0c5 100644
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -132,24 +132,24 @@ module ActiveRecord
# Clears out the association cache.
def clear_association_cache #:nodoc:
- self.class.reflect_on_all_associations.to_a.each do |assoc|
- instance_variable_set "@#{assoc.name}", nil
- end if persisted?
+ @association_cache.clear if persisted?
end
+ # :nodoc:
+ attr_reader :association_cache
+
private
# Returns the specified association instance if it responds to :loaded?, nil otherwise.
def association_instance_get(name)
- ivar = "@#{name}"
- if instance_variable_defined?(ivar)
- association = instance_variable_get(ivar)
+ if @association_cache.key? name
+ association = @association_cache[name]
association if association.respond_to?(:loaded?)
end
end
# Set the specified association instance.
def association_instance_set(name, association)
- instance_variable_set("@#{name}", association)
+ @association_cache[name] = association
end
# Associations are a set of macro-like class methods for tying objects together through