aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/arel/relations/order.rb14
-rw-r--r--spec/arel/unit/relations/order_spec.rb4
2 files changed, 11 insertions, 7 deletions
diff --git a/lib/arel/relations/order.rb b/lib/arel/relations/order.rb
index b1454973c8..662d3740df 100644
--- a/lib/arel/relations/order.rb
+++ b/lib/arel/relations/order.rb
@@ -1,15 +1,19 @@
module Arel
class Order < Compound
- attr_reader :orders
-
- def initialize(relation, *orders)
- @relation, @orders = relation, orders.collect { |o| o.bind(relation) }
+ attr_reader :orderings
+
+ def initialize(relation, *orderings)
+ @relation, @orderings = relation, orderings.collect { |o| o.bind(relation) }
end
def ==(other)
self.class == other.class and
relation == other.relation and
- orders == other.orders
+ orderings == other.orderings
+ end
+
+ def orders
+ orderings + relation.orders
end
end
end \ No newline at end of file
diff --git a/spec/arel/unit/relations/order_spec.rb b/spec/arel/unit/relations/order_spec.rb
index 514612f047..d373a8ba12 100644
--- a/spec/arel/unit/relations/order_spec.rb
+++ b/spec/arel/unit/relations/order_spec.rb
@@ -52,11 +52,11 @@ module Arel
@another_attribute = @relation[:name]
end
- it "manufactures sql with the order clause of the last ordering" do
+ it "manufactures sql with the order clause of the last ordering preceding the first ordering" do
Order.new(@ordered_relation, @another_attribute).to_sql.should be_like("
SELECT `users`.`id`, `users`.`name`
FROM `users`
- ORDER BY `users`.`name`
+ ORDER BY `users`.`name`, `users`.`id`
")
end
end