aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/named_scope.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/named_scope.rb')
-rw-r--r--activerecord/lib/active_record/named_scope.rb21
1 files changed, 20 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/named_scope.rb b/activerecord/lib/active_record/named_scope.rb
index 321871104c..38d54fa8ec 100644
--- a/activerecord/lib/active_record/named_scope.rb
+++ b/activerecord/lib/active_record/named_scope.rb
@@ -23,7 +23,26 @@ module ActiveRecord
#
# You can define a scope that applies to all finders using ActiveRecord::Base.default_scope.
def scoped(options = {}, &block)
- options.present? ? Scope.new(self, options, &block) : arel_table
+ if options.present?
+ Scope.new(self, options, &block)
+ else
+ if !scoped?(:find)
+ relation = arel_table
+ else
+ relation = construct_finder_arel
+ include_associations = scope(:find, :include)
+
+ if include_associations.present?
+ if references_eager_loaded_tables?(options)
+ relation.eager_load(include_associations)
+ else
+ relation.preload(include_associations)
+ end
+ end
+ end
+
+ relation
+ end
end
def scopes