设置DataMapper:来自querystring params的顺序参数

时间:2011-03-21 16:34:23

标签: ruby datamapper

由于我还不熟悉Ruby,我正在努力构建一个优雅的Rails3 / DataMapper项目排序解决方案。

DataMapper示例显示如何使用带有ascdesc参数的符号来命令恢复。例如:

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 个答案:

答案 0 :(得分:4)

我找到了另一种方法,但我不相信这是最好的方式:

sort = DataMapper::Query::Operator.new(params[:sort], params[:sort_dir])
Document.all(:order => [sort])

答案 1 :(得分:1)

或者,您可以尝试使用send执行某些操作,如下所示:

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

我认为你的方式更容易理解。