2016-06-08 2 views
2

Что я хотел бы сделать, это передать список столбцов для сортировки по параметру спорта и получить ответ AMS на основе этих параметров. Например, если я использую этот url _GET /authors?sort=lastname,firstname_, он будет занимать вид по фамилии, а затем по первому. Однако, если бы я сделал это GET /authors?sort=number_of_books,lastname,firstnam*, он вернул бы авторов на основе количества книг, а затем фамилии и имени.Как я могу выполнить сортировку с помощью Active Serializer?

Похоже, что AMS не делает этого по умолчанию (и они не собираются делать это в будущем), но могу ли я что-то сделать в сериализаторе, который сделает это для меня?

ответ

3

По моему опыту, AMS действительно не занимается сортировкой. Это похоже на то, что вы сделали бы до сериализации. Возможно, в контроллере или еще лучше в модели.

UPDATE

@CalebSayre если ваш параметр сортировки только простой список полей для сортировки вы могли бы, вероятно, уйти с чем-то же просто, как это.

render json: Author.order(params[:sort]), serializer: AuthorSerializer 

Если никакие параметры сортировки не пройдены, это просто пропустит предложение порядка.

+0

Я согласен с Дэном. То, что вы действительно хотите, - это создать объект Search или Filter, который принимает эти параметры, выполняет всю логику сортировки и возвращает коллекцию. Затем передайте эту коллекцию и метаданные в AMS. – Genzume

+0

@TylerFerraro Я думаю, это действительно то, что мой вопрос ... Как передать в полях параметр сортировки, чтобы я мог сортировать? –