Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Cache the descends_from_activerecord? call to speed up query generati…

…on. [skaes] Closes #9765

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7723 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit b4ec9904c6f34331bbe32a304acf4b43e43a4f18 1 parent eb5033a
@NZKoz NZKoz authored
Showing with 8 additions and 3 deletions.
  1. +8 −3 activerecord/lib/active_record/base.rb
View
11 activerecord/lib/active_record/base.rb
@@ -907,6 +907,11 @@ def descends_from_active_record?
end
end
+ def finder_needs_type_condition? #:nodoc:
+ # This is like this because benchmarking justifies the strange :false stuff
+ :true == (@finder_needs_type_condition ||= descends_from_active_record? ? :false : :true)
+ end
+
# Returns a string like 'Post id:integer, title:string, body:text'
def inspect
if self == Base
@@ -1199,9 +1204,9 @@ def add_conditions!(sql, conditions, scope = :auto)
segments = []
segments << sanitize_sql(scope[:conditions]) if scope && !scope[:conditions].blank?
segments << sanitize_sql(conditions) unless conditions.blank?
- segments << type_condition unless descends_from_active_record?
- segments.compact!
- sql << "WHERE (#{segments.join(") AND (")}) " unless segments.all?(&:blank?)
+ segments << type_condition if finder_needs_type_condition?
+ segments.delete_if{|s| s.blank?}
+ sql << "WHERE (#{segments.join(") AND (")}) " unless segments.empty?
end
def type_condition
Please sign in to comment.
Something went wrong with that request. Please try again.