diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-09-07 16:00:21 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-09-07 16:00:21 -0300 |
commit | 64a1cb1a3e38cdf6cdcdbdc499cd020dc5f76df4 (patch) | |
tree | baccb3fa2b41ca8cec99a91a8a9f499518016dfa /activerecord/lib | |
parent | 2cc6f6b7f178944d5c5f08b619193ee4e5a29ae4 (diff) | |
parent | 69de09c5cee19d63400c4b62d2ebeac5a89eb14d (diff) | |
download | rails-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.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/scoping/default.rb | 3 |
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 }) |