Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

reducing function calls and using faster methods for testing

  • Loading branch information...
commit d1c53a9ad273f31618adcfbcabb39fd74bb2b91f 1 parent 87a28e3
@tenderlove tenderlove authored
View
14 activerecord/lib/active_record/relation.rb
@@ -99,7 +99,7 @@ def many?
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 @@ def to_sql
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
View
12 activerecord/lib/active_record/relation/query_methods.rb
@@ -129,7 +129,7 @@ def custom_join_sql(*joins)
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 @@ def build_arel
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 @@ def build_arel
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
Please sign in to comment.
Something went wrong with that request. Please try again.