aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-12-26 14:26:02 +0530
committerPratik Naik <pratiknaik@gmail.com>2009-12-26 14:26:02 +0530
commit284d186cf4e055cefb2f8482d016e3bd09e9c341 (patch)
treee21bdcc66b1c7d563dbe9d41b8feec6e6300bede /activerecord/lib/active_record/relation.rb
parent187fbe5cbadf9d6fe5009a4a436fac28bcf8c99c (diff)
downloadrails-284d186cf4e055cefb2f8482d016e3bd09e9c341.tar.gz
rails-284d186cf4e055cefb2f8482d016e3bd09e9c341.tar.bz2
rails-284d186cf4e055cefb2f8482d016e3bd09e9c341.zip
Make sure the relations are always immutable
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb13
1 files changed, 5 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 40ccdd4696..3dedf44190 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -12,18 +12,15 @@ module ActiveRecord
end
def preload(associations)
- @associations_to_preload << associations
- self
+ create_new_relation(@relation, @readonly, @associations_to_preload + Array.wrap(associations))
end
def eager_load(associations)
- @eager_load_associations += Array.wrap(associations)
- self
+ create_new_relation(@relation, @readonly, @associations_to_preload, @eager_load_associations + Array.wrap(associations))
end
def readonly
- @readonly = true
- self
+ create_new_relation(@relation, true)
end
def to_a
@@ -124,8 +121,8 @@ module ActiveRecord
end
end
- def create_new_relation(relation)
- Relation.new(@klass, relation, @readonly, @associations_to_preload, @eager_load_associations)
+ def create_new_relation(relation, readonly = @readonly, preload = @associations_to_preload, eager_load = @eager_load_associations)
+ Relation.new(@klass, relation, readonly, preload, eager_load)
end
end