Ruby 设置DataMapper:querystring参数的顺序参数

Ruby 设置DataMapper:querystring参数的顺序参数,ruby,datamapper,Ruby,Datamapper,由于我还不能流利地使用Ruby,我正在努力在我的Rails3/DataMapper项目中构建一个优雅的排序解决方案 DataMapper示例演示了如何使用带有asc或desc参数的符号来订购重新脉冲。例如: Document.all(:order => [:created_at.desc]) 将params[:sort]和params[:direction]转换为DataMapper可接受的格式的最佳方法是什么 由于缺乏更好的想法,我目前的想法如下: sort_order = (para

由于我还不能流利地使用Ruby,我正在努力在我的Rails3/DataMapper项目中构建一个优雅的排序解决方案

DataMapper示例演示了如何使用带有
asc
desc
参数的符号来订购重新脉冲。例如:

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])

它能工作,但感觉笨重。我肯定做错了什么。

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

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

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

Document.all(:order => [sort_order.send(params[:sort_dir] == "desc" ? :desc : :asc)])
不过我觉得你的方式更容易理解