Permalink
Browse files

reduce object allocation during AR instantiation

  • Loading branch information...
1 parent 196f92f commit 558b5bb49070dc8bb235d86f1510c8af107c88ee @tenderlove tenderlove committed Jun 28, 2011
Showing with 8 additions and 3 deletions.
  1. +2 −0 activerecord/lib/active_record/base.rb
  2. +6 −3 activerecord/lib/active_record/named_scope.rb
View
2 activerecord/lib/active_record/base.rb
@@ -2092,6 +2092,8 @@ def convert_number_column_value(value)
end
def populate_with_current_scope_attributes
+ return unless self.class.scope_attributes?
+
self.class.scope_attributes.each do |att,value|
send("#{att}=", value) if respond_to?("#{att}=")
end
View
9 activerecord/lib/active_record/named_scope.rb
@@ -47,15 +47,18 @@ def scope_attributes # :nodoc:
if current_scope
current_scope.scope_for_create
else
- # Return an empty hash in the simple case
- return {} unless default_scopes.any?
-
scope = relation.clone
scope.default_scoped = true
scope.scope_for_create
end
end
+ ##
+ # Are there default attributes associated with this scope?
+ def scope_attributes? # :nodoc:
+ current_scope || default_scopes.any?
+ end
+
# Adds a class method for retrieving and querying objects. A \scope represents a narrowing of a database query,
# such as <tt>where(:color => :red).select('shirts.*').includes(:washing_instructions)</tt>.
#

0 comments on commit 558b5bb

Please sign in to comment.