diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-30 13:38:09 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-30 13:38:09 -0700 |
commit | d1c53a9ad273f31618adcfbcabb39fd74bb2b91f (patch) | |
tree | ea18e741d21d14cb1513c958834e2ae3fa31bdf0 | |
parent | 87a28e34aef3f68de8e344aadc47a516e28c0b09 (diff) | |
download | rails-d1c53a9ad273f31618adcfbcabb39fd74bb2b91f.tar.gz rails-d1c53a9ad273f31618adcfbcabb39fd74bb2b91f.tar.bz2 rails-d1c53a9ad273f31618adcfbcabb39fd74bb2b91f.zip |
reducing function calls and using faster methods for testing
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 14 | ||||
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 12 |
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 |