Commit a1466b692b299022ed24894e96291b15b8b2ef9c
1 parent
7727d533
Exists in
relation
Added reorder [skip ci]
Showing
2 changed files
with
19 additions
and
0 deletions
Show diff stats
lib/searchkick/relation.rb
... | ... | @@ -78,6 +78,15 @@ module Searchkick |
78 | 78 | self |
79 | 79 | end |
80 | 80 | |
81 | + def reorder(*args) | |
82 | + spawn.reorder!(*args) | |
83 | + end | |
84 | + | |
85 | + def reorder!(*args) | |
86 | + options[:order] = args | |
87 | + self | |
88 | + end | |
89 | + | |
81 | 90 | def select(*fields, &block) |
82 | 91 | if block_given? |
83 | 92 | # TODO better error message | ... | ... |
test/order_test.rb
... | ... | @@ -38,6 +38,16 @@ class OrderTest < Minitest::Test |
38 | 38 | assert_equal expected, Product.search("product").order(:color).order(store_id: :desc).map(&:name) |
39 | 39 | end |
40 | 40 | |
41 | + def test_reorder | |
42 | + store [ | |
43 | + {name: "Product A", color: "blue", store_id: 1}, | |
44 | + {name: "Product B", color: "red", store_id: 3}, | |
45 | + {name: "Product C", color: "red", store_id: 2} | |
46 | + ] | |
47 | + expected = ["Product C", "Product B", "Product A"] | |
48 | + assert_equal expected, Product.search("product").order(:store_id).reorder(name: :desc).map(&:name) | |
49 | + end | |
50 | + | |
41 | 51 | def test_order_unmapped_type |
42 | 52 | assert_order "product", [], order: {not_mapped: {unmapped_type: "long"}} |
43 | 53 | assert_search_relation [], Product.search("product").order(not_mapped: {unmapped_type: "long"}) | ... | ... |