aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2010-01-19 15:22:09 +0530
committerPratik Naik <pratiknaik@gmail.com>2010-01-19 15:22:09 +0530
commitb9599502c9e738a5a1513e75d08f8d40ed408265 (patch)
treeafad18ebc168c3d3c511626255a58c7c306f95a5 /activerecord/lib/active_record/relation.rb
parent71d67fc6bd504956bce66e274e6228dd00a814c1 (diff)
downloadrails-b9599502c9e738a5a1513e75d08f8d40ed408265.tar.gz
rails-b9599502c9e738a5a1513e75d08f8d40ed408265.tar.bz2
rails-b9599502c9e738a5a1513e75d08f8d40ed408265.zip
Add Relation#construct_relation_for_association_calculations for calculations with includes
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb11
1 files changed, 7 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index e37e692a97..19f91f4278 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -45,12 +45,10 @@ module ActiveRecord
def to_a
return @records if loaded?
- eager_loading = @eager_load_values.any? || (@includes_values.any? && references_eager_loaded_tables?)
-
- @records = eager_loading ? find_with_associations : @klass.find_by_sql(arel.to_sql)
+ @records = eager_loading? ? find_with_associations : @klass.find_by_sql(arel.to_sql)
preload = @preload_values
- preload += @includes_values unless eager_loading
+ preload += @includes_values unless eager_loading?
preload.each {|associations| @klass.send(:preload_associations, @records, associations) }
# @readonly_value is true only if set explicity. @implicit_readonly is true if there are JOINS and no explicit SELECT.
@@ -112,6 +110,7 @@ module ActiveRecord
def reset
@first = @last = @to_sql = @order_clause = @scope_for_create = @arel = @loaded = nil
+ @should_eager_load = @join_dependency = nil
@records = []
self
end
@@ -133,6 +132,10 @@ module ActiveRecord
end
end
+ def eager_loading?
+ @should_eager_load ||= (@eager_load_values.any? || (@includes_values.any? && references_eager_loaded_tables?))
+ end
+
protected
def method_missing(method, *args, &block)