diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-06-25 21:50:20 -0300 |
---|---|---|
committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2012-06-25 22:00:54 -0300 |
commit | 755d1636107f814c6e0f76e7b3f327b9b4bdcc07 (patch) | |
tree | e4e366179959e4a9853482b6024a342fa24f9ad0 | |
parent | 9e1a199568f40f2f26d98731e9dce3646ddf25a9 (diff) | |
download | rails-755d1636107f814c6e0f76e7b3f327b9b4bdcc07.tar.gz rails-755d1636107f814c6e0f76e7b3f327b9b4bdcc07.tar.bz2 rails-755d1636107f814c6e0f76e7b3f327b9b4bdcc07.zip |
Use args.flatten! in query methods when applicable
Try to use more destructive methods on *args when applicable, to avoid
creating new objects.
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 5e5aca0396..d61df216bc 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -83,7 +83,9 @@ module ActiveRecord end def references!(*args) - self.references_values = (references_values + args.flatten.map(&:to_s)).uniq + args.flatten! + + self.references_values = (references_values + args.map!(&:to_s)).uniq self end @@ -134,7 +136,9 @@ module ActiveRecord end def group!(*args) - self.group_values += args.flatten + args.flatten! + + self.group_values += args self end @@ -143,11 +147,10 @@ module ActiveRecord end def order!(*args) - args = args.flatten + args.flatten! references = args.reject { |arg| Arel::Node === arg } - .map { |arg| arg =~ /^([a-zA-Z]\w*)\.(\w+)/ && $1 } - .compact + references.map! { |arg| arg =~ /^([a-zA-Z]\w*)\.(\w+)/ && $1 }.compact! references!(references) if references.any? self.order_values += args @@ -168,8 +171,10 @@ module ActiveRecord end def reorder!(*args) + args.flatten! + self.reordering_value = true - self.order_values = args.flatten + self.order_values = args self end @@ -327,7 +332,7 @@ module ActiveRecord # # Should be used with order. # - # User.offset(10).order("name ASC") + # User.offset(10).order("name ASC") def offset(value) spawn.offset!(value) end |