From 284d186cf4e055cefb2f8482d016e3bd09e9c341 Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Sat, 26 Dec 2009 14:26:02 +0530 Subject: Make sure the relations are always immutable --- activerecord/lib/active_record/relation.rb | 13 +++++-------- 1 file 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 -- cgit v1.2.3