aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-07-30 13:38:09 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-07-30 13:38:09 -0700
commitd1c53a9ad273f31618adcfbcabb39fd74bb2b91f (patch)
treeea18e741d21d14cb1513c958834e2ae3fa31bdf0 /activerecord/lib
parent87a28e34aef3f68de8e344aadc47a516e28c0b09 (diff)
downloadrails-d1c53a9ad273f31618adcfbcabb39fd74bb2b91f.tar.gz
rails-d1c53a9ad273f31618adcfbcabb39fd74bb2b91f.tar.bz2
rails-d1c53a9ad273f31618adcfbcabb39fd74bb2b91f.zip
reducing function calls and using faster methods for testing
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/relation.rb14
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb12
2 files changed, 10 insertions, 16 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index a8cea44c78..7962f52738 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -99,7 +99,7 @@ module ActiveRecord
if block_given?
to_a.many? { |*block_args| yield(*block_args) }
else
- @limit_value.present? ? to_a.many? : size > 1
+ @limit_value ? to_a.many? : size > 1
end
end
@@ -316,12 +316,12 @@ module ActiveRecord
def scope_for_create
@scope_for_create ||= begin
- @create_with_value || @where_values.inject({}) do |hash, where|
- if where.is_a?(Arel::Predicates::Equality)
- hash[where.operand1.name] = where.operand2.respond_to?(:value) ? where.operand2.value : where.operand2
- end
- hash
- end
+ @create_with_value || Hash[
+ @where_values.grep(Arel::Predicates::Equality).map { |where|
+ [where.operand1.name,
+ where.operand2.respond_to?(:value) ?
+ where.operand2.value : where.operand2]
+ }]
end
end
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 716e7275a5..4342dde5c8 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -129,7 +129,7 @@ module ActiveRecord
def build_arel
arel = table
- arel = build_joins(arel, @joins_values) if @joins_values.present?
+ arel = build_joins(arel, @joins_values) unless @joins_values.empty?
@where_values.uniq.each do |where|
next if where.blank?
@@ -145,7 +145,7 @@ module ActiveRecord
arel = arel.having(*@having_values.uniq.select{|h| h.present?}) if @having_values.present?
- arel = arel.take(@limit_value) if @limit_value.present?
+ arel = arel.take(@limit_value) if @limit_value
arel = arel.skip(@offset_value) if @offset_value.present?
arel = arel.group(*@group_values.uniq.select{|g| g.present?}) if @group_values.present?
@@ -155,13 +155,7 @@ module ActiveRecord
arel = build_select(arel, @select_values.uniq)
arel = arel.from(@from_value) if @from_value.present?
-
- case @lock_value
- when TrueClass
- arel = arel.lock
- when String
- arel = arel.lock(@lock_value)
- end if @lock_value.present?
+ arel = arel.lock(@lock_value) if @lock_value
arel
end