diff --git a/lib/searchkick/relation.rb b/lib/searchkick/relation.rb index 287fcd5..1fc759e 100644 --- a/lib/searchkick/relation.rb +++ b/lib/searchkick/relation.rb @@ -117,33 +117,27 @@ module Searchkick end # experimental - def order(value) - clone.order!(value) + def order(*values) + clone.order!(*values) end # experimental - def order!(value) + def order!(*values) + values = values.first if values.size == 1 && values.first.is_a?(Array) check_loaded - if @options[:order] - order = @options[:order] - order = [order] unless order.is_a?(Array) - order << value - @options[:order] = order - else - @options[:order] = value - end + (@options[:order] ||= []).concat(values) self end # experimental - def reorder(value) - clone.reorder!(value) + def reorder(*values) + clone.reorder!(*values) end # experimental - def reorder!(value) + def reorder!(*values) check_loaded - @options[:order] = value + @options[:order] = values self end diff --git a/test/order_test.rb b/test/order_test.rb index 9ac5c5a..a270cbc 100644 --- a/test/order_test.rb +++ b/test/order_test.rb @@ -21,6 +21,7 @@ class OrderTest < Minitest::Test ] assert_order "product", ["Product A", "Product B", "Product C"], order: {color: :asc, store_id: :desc} assert_order_relation ["Product A", "Product B", "Product C"], Product.search("product").order(color: :asc, store_id: :desc) + assert_order_relation ["Product A", "Product B", "Product C"], Product.search("product").order(:color, store_id: :desc) assert_order_relation ["Product A", "Product B", "Product C"], Product.search("product").order(color: :asc).order(store_id: :desc) assert_order_relation ["Product B", "Product C", "Product A"], Product.search("product").order(color: :asc).reorder(store_id: :desc) end -- libgit2 0.21.0