From 53a90436cff23380f64c9c4fbad74d4e240b60c2 Mon Sep 17 00:00:00 2001 From: Emilio Tagua Date: Thu, 9 Sep 2010 17:35:00 -0300 Subject: Refactor finder conditions look up and assigment for apply_finder_conditions. --- .../lib/active_record/relation/spawn_methods.rb | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'activerecord/lib/active_record/relation/spawn_methods.rb') diff --git a/activerecord/lib/active_record/relation/spawn_methods.rb b/activerecord/lib/active_record/relation/spawn_methods.rb index ba8efb5409..f039645255 100644 --- a/activerecord/lib/active_record/relation/spawn_methods.rb +++ b/activerecord/lib/active_record/relation/spawn_methods.rb @@ -97,22 +97,16 @@ module ActiveRecord return relation unless options options.assert_valid_keys(VALID_FIND_OPTIONS) + finders = options.dup + finders.delete_if { |key, value| value.nil? } - [:joins, :select, :group, :having, :limit, :offset, :from, :lock].each do |finder| - if value = options[finder] - relation = relation.send(finder, value) - end - end - - relation = relation.readonly(options[:readonly]) if options.key? :readonly - - [:group, :order].each do |finder| - relation.send("#{finder}_values=", relation.send("#{finder}_values") + Array.wrap(options[finder])) if options.has_key?(finder) + ([:joins, :select, :group, :order, :having, :limit, :offset, :from, :lock, :readonly] & finders.keys).each do |finder| + relation = relation.send(finder, finders[finder]) end - relation = relation.where(options[:conditions]) if options.has_key?(:conditions) - relation = relation.includes(options[:include]) if options.has_key?(:include) - relation = relation.extending(options[:extend]) if options.has_key?(:extend) + relation = relation.where(finders[:conditions]) if options.has_key?(:conditions) + relation = relation.includes(finders[:include]) if options.has_key?(:include) + relation = relation.extending(finders[:extend]) if options.has_key?(:extend) relation end -- cgit v1.2.3