Set DataMapper: параметры заказа из параметров строки запроса - PullRequest
3 голосов
/ 21 марта 2011

Поскольку я еще не владею Ruby, я пытаюсь создать элегантное решение для сортировки в моем проекте Rails3 / DataMapper.

Примеры DataMapper показывают, как использовать символы с ascили desc параметры для заказа restuls.Например:

Document.all(:order => [:created_at.desc])

Как лучше всего преобразовать params[:sort] и params[:direction] в приемлемый формат для DataMapper?

Из-за отсутствия лучшей идеи, вот чтоУ меня так далеко:

sort_order = (params[:sort] || 'created_at').to_sym
sort_obj = params[:sort_dir] == 'desc' ? sort_order.desc : sort_order.asc
Document.all(:order => [sort_obj])

Работает, но чувствует себя неуклюже.Я, конечно, что-то делаю не так.

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Я нашел другой способ сделать это, но я не уверен, что это лучший путь:

sort = DataMapper::Query::Operator.new(params[:sort], params[:sort_dir])
Document.all(:order => [sort])
1 голос
/ 19 июня 2011

В качестве альтернативы, вы можете попробовать что-то сделать с send, например:

Document.all(:order => [sort_order.send(params[:sort_dir] == "desc" ? :desc : :asc)])

Я думаю, что ваш путь легче понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...