diff options
Diffstat (limited to 'activerecord/lib/active_record/relation/query_methods.rb')
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index e71f1cca72..cd6c6f8d1f 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -49,7 +49,9 @@ module ActiveRecord def where(opts, *rest) value = build_where(opts, rest) - value ? clone.tap {|r| r.where_values += Array.wrap(value) } : clone + copy = clone + copy.where_values += Array.wrap(value) if value + copy end def having(*args) @@ -58,7 +60,9 @@ module ActiveRecord end def limit(value = true) - clone.tap {|r| r.limit_value = value } + copy = clone + copy.limit_value = value + copy end def offset(value = true) @@ -131,9 +135,7 @@ module ActiveRecord arel = build_joins(arel, @joins_values) unless @joins_values.empty? - @where_values.uniq.each do |where| - next if where.blank? - + (@where_values - ['']).uniq.each do |where| case where when Arel::SqlLiteral arel = arel.where(where) @@ -217,7 +219,7 @@ module ActiveRecord end def build_select(arel, selects) - if selects.present? + unless selects.empty? @implicit_readonly = false # TODO: fix this ugly hack, we should refactor the callers to get an ARel compatible array. # Before this change we were passing to ARel the last element only, and ARel is capable of handling an array |