From 79e14153911836ee7cc922233714fad6e1684099 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 9 Mar 2022 11:06:55 -0500 Subject: [PATCH] Improved order pattern --- lib/searchkick/relation.rb | 24 +++++++++--------------- test/order_test.rb | 1 + 2 files changed, 10 insertions(+), 15 deletions(-) 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