aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-09-07 16:00:21 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-09-07 16:00:21 -0300
commit64a1cb1a3e38cdf6cdcdbdc499cd020dc5f76df4 (patch)
treebaccb3fa2b41ca8cec99a91a8a9f499518016dfa
parent2cc6f6b7f178944d5c5f08b619193ee4e5a29ae4 (diff)
parent69de09c5cee19d63400c4b62d2ebeac5a89eb14d (diff)
downloadrails-64a1cb1a3e38cdf6cdcdbdc499cd020dc5f76df4.tar.gz
rails-64a1cb1a3e38cdf6cdcdbdc499cd020dc5f76df4.tar.bz2
rails-64a1cb1a3e38cdf6cdcdbdc499cd020dc5f76df4.zip
Merge pull request #21523 from tgxworld/improve_perf_all
PERF: Don't create a Relation when it is not needed.
-rw-r--r--activerecord/lib/active_record/scoping/default.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/scoping/default.rb b/activerecord/lib/active_record/scoping/default.rb
index a1adf8e3ee..6454f17fdb 100644
--- a/activerecord/lib/active_record/scoping/default.rb
+++ b/activerecord/lib/active_record/scoping/default.rb
@@ -99,12 +99,13 @@ module ActiveRecord
self.default_scopes += [scope]
end
- def build_default_scope(base_rel = relation) # :nodoc:
+ def build_default_scope(base_rel = nil) # :nodoc:
return if abstract_class?
if !Base.is_a?(method(:default_scope).owner)
# The user has defined their own default scope method, so call that
evaluate_default_scope { default_scope }
elsif default_scopes.any?
+ base_rel ||= relation
evaluate_default_scope do
default_scopes.inject(base_rel) do |default_scope, scope|
default_scope.merge(base_rel.scoping { scope.call })