diff options
author | Yves Senn <yves.senn@gmail.com> | 2013-09-04 02:00:09 -0700 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2013-09-04 02:00:09 -0700 |
commit | beb5ea8468e7f629b32252efd644bc68d1b34237 (patch) | |
tree | 51e5e8870fa04518aa6e493622e06cd9ed16f0be /activerecord/lib/active_record/relation | |
parent | 489a0890b6dbb8c7954e2a3b120fe31de64f156c (diff) | |
parent | 3f1c0c2bd0b89255b0d7d8d6fe45ac2d50b05076 (diff) | |
download | rails-beb5ea8468e7f629b32252efd644bc68d1b34237.tar.gz rails-beb5ea8468e7f629b32252efd644bc68d1b34237.tar.bz2 rails-beb5ea8468e7f629b32252efd644bc68d1b34237.zip |
Merge pull request #11958 from jetthoughts/extract_pre_process_orders_args
Re-use order arguments pre-processing for reorder
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 9f2a039d94..1c6ea94c0b 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -289,17 +289,7 @@ module ActiveRecord end def order!(*args) # :nodoc: - args.flatten! - validate_order_args(args) - - references = args.grep(String) - references.map! { |arg| arg =~ /^([a-zA-Z]\w*)\.(\w+)/ && $1 }.compact! - references!(references) if references.any? - - # if a symbol is given we prepend the quoted table name - args.map! do |arg| - arg.is_a?(Symbol) ? Arel::Nodes::Ascending.new(klass.arel_table[arg]) : arg - end + preprocess_order_args(args) self.order_values += args self @@ -320,8 +310,7 @@ module ActiveRecord end def reorder!(*args) # :nodoc: - args.flatten! - validate_order_args(args) + preprocess_order_args(args) self.reordering_value = true self.order_values = args @@ -1036,6 +1025,20 @@ module ActiveRecord end end + def preprocess_order_args(order_args) + order_args.flatten! + validate_order_args(order_args) + + references = order_args.grep(String) + references.map! { |arg| arg =~ /^([a-zA-Z]\w*)\.(\w+)/ && $1 }.compact! + references!(references) if references.any? + + # if a symbol is given we prepend the quoted table name + order_args.map! do |arg| + arg.is_a?(Symbol) ? Arel::Nodes::Ascending.new(klass.arel_table[arg]) : arg + end + end + # Checks to make sure that the arguments are not blank. Note that if some # blank-like object were initially passed into the query method, then this # method will not raise an error. |