Skip to content

Commit d716f5d

Browse files
author
Lee Richmond
committed
Allow customizable default sort
1 parent f606e9c commit d716f5d

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

lib/jsonapi_compliable/base.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def default_page_size
2121
20
2222
end
2323

24+
def default_sort
25+
'id'
26+
end
27+
2428
def jsonapi_scope(scope,
2529
filter: true,
2630
includes: true,

lib/jsonapi_compliable/scope/sort.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def apply_custom_scope
1515
private
1616

1717
def sort_param
18-
@sort_param ||= (params[:sort] || 'id')
18+
@sort_param ||= (params[:sort] || @controller.default_sort)
1919
end
2020

2121
def direction

spec/sorting_spec.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ def index
1414
Author.create!(first_name: 'Philip')
1515
end
1616

17-
it 'defaults sort to id asc' do
17+
it 'defaults sort to controller default_sort' do
18+
expect(controller).to receive(:default_sort) { 'id' }
1819
get :index
19-
expect(json_ids.length).to eq(2)
2020
expect(json_ids(true)).to eq(Author.pluck(:id))
21+
expect(controller).to receive(:default_sort) { '-id' }
22+
get :index
23+
expect(json_ids(true)).to eq(Author.pluck(:id).reverse)
2124
end
2225

2326
context 'when passing sort param' do

0 commit comments

Comments
 (0)