From d345ed40b5783ec2cb43f4434872ea5b2d57d203 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 15 Jul 2013 16:16:18 -0700 Subject: use arel rather than slapping together SQL strings --- activerecord/lib/active_record/relation/query_methods.rb | 6 ++++-- activerecord/test/cases/relation_test.rb | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index a27b6abe2e..f146c1fdb2 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -285,8 +285,10 @@ module ActiveRecord references!(references) if references.any? # if a symbol is given we prepend the quoted table name - args = args.map { |arg| - arg.is_a?(Symbol) ? "#{quoted_table_name}.#{arg} ASC" : arg + args = args.map! { |arg| + arg.is_a?(Symbol) ? + Arel::Nodes::Ascending.new(klass.arel_table[arg]) : + arg } self.order_values = args + self.order_values diff --git a/activerecord/test/cases/relation_test.rb b/activerecord/test/cases/relation_test.rb index c92a20bec3..7862d96bd7 100644 --- a/activerecord/test/cases/relation_test.rb +++ b/activerecord/test/cases/relation_test.rb @@ -201,8 +201,8 @@ module ActiveRecord class RelationMutationTest < ActiveSupport::TestCase class FakeKlass < Struct.new(:table_name, :name) - def quoted_table_name - %{"#{table_name}"} + def arel_table + Post.arel_table end end @@ -224,7 +224,10 @@ module ActiveRecord test "#order! with symbol prepends the table name" do assert relation.order!(:name).equal?(relation) - assert_equal ['"posts".name ASC'], relation.order_values + node = relation.order_values.first + assert node.ascending? + assert_equal :name, node.expr.name + assert_equal "posts", node.expr.relation.name end test "#order! on non-string does not attempt regexp match for references" do -- cgit v1.2.3