aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
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