Commit 1ea26b3
committed
Give resource more control over sortable fields
I'm in a situation where I want clients to have repeatable, random sort
order on a collection. My solution is to pass a ?sort=rand-N, with N
being the seed used for sorting. This way, if the client was to page
through the list or link to the list, the sort order would be preserved.
For example, `/providers?sort=rand-42` would apply a random sort order
with 42 as the key.
To accommodate this, I need JSONAPI::RequestParser to allow sort keys
that are not in a predetermined list. I think a good solution to this
would be to have the RequestParser defer to the Resource when checking
if a sort key is valid.
The existing behaviour is maintained by moving the check on
sortable_fields to sortable_field?, which can be overloaded by
application specific resource classes.1 parent 7ebba9b commit 1ea26b3
4 files changed
Lines changed: 26 additions & 2 deletions
File tree
- lib/jsonapi
- test/unit
- jsonapi_request
- resource
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
426 | 426 | | |
427 | 427 | | |
428 | 428 | | |
429 | | - | |
430 | 429 | | |
431 | | - | |
| 430 | + | |
432 | 431 | | |
433 | 432 | | |
434 | 433 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
607 | 607 | | |
608 | 608 | | |
609 | 609 | | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
610 | 614 | | |
611 | 615 | | |
612 | 616 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
17 | 23 | | |
18 | 24 | | |
19 | 25 | | |
| |||
211 | 217 | | |
212 | 218 | | |
213 | 219 | | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
214 | 229 | | |
215 | 230 | | |
216 | 231 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
689 | 689 | | |
690 | 690 | | |
691 | 691 | | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
692 | 698 | | |
0 commit comments