aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorTsutomu Kuroda <t-kuroda@oiax.jp>2013-08-09 23:46:27 +0900
committerTsutomu Kuroda <t-kuroda@oiax.jp>2014-01-29 09:16:46 +0900
commitc1d99344476e1046a609f64776621542b399c929 (patch)
tree515e8e0aa6951118fe756c96c36ee60952e19f12 /activerecord/lib/active_record/relation
parentb9cd5a29dd4c6142b19c861fbf1a67452320b3dd (diff)
downloadrails-c1d99344476e1046a609f64776621542b399c929.tar.gz
rails-c1d99344476e1046a609f64776621542b399c929.tar.bz2
rails-c1d99344476e1046a609f64776621542b399c929.zip
Handle aliased attributes in AR::Relation#select, #order, etc.
With this we can write `Model#select(:aliased)`, `Model#order(:aliased)`, `Model#reoder(aliased: :desc)`, etc. Supplementary work to 54122067acaad39b277a5363c6d11d6804c7bf6b.
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 993f628fa3..88fc47fada 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -234,7 +234,9 @@ module ActiveRecord
def select!(*fields) # :nodoc:
fields.flatten!
-
+ fields.map! do |field|
+ klass.attribute_alias?(field) ? klass.attribute_alias(field).to_sym : field
+ end
self.select_values += fields
self
end
@@ -1048,9 +1050,11 @@ module ActiveRecord
order_args.map! do |arg|
case arg
when Symbol
+ arg = klass.attribute_alias(arg).to_sym if klass.attribute_alias?(arg)
table[arg].asc
when Hash
arg.map { |field, dir|
+ field = klass.attribute_alias(field).to_sym if klass.attribute_alias?(field)
table[field].send(dir)
}
else