我有一个控制器方法,我试图传递一个具有多个order_by
参数的字符串来返回一个排序的集合。
order_by语法适用于一个字符串化参数,例如
order_param = "image_fize_size DESC"
query.order_by(order_param)
>> #<Mongoid::Criteria
selector: {...},
options: {:sort => {"image_file_size"=> -1}}
class: ...>
由于mongoid在后台转换字符串
是否有一定的语法,我可以使用多个参数作为一个字符串传递给order_by
方法,而无需任何复杂的字符串操作?例如
order_param = "image_file_size DESC created_at DESC"
query.order_by(order_param)
# to hopefully yield a criteria that looks like:
>> #<Mongoid::Criteria
selector: {...},
options: {:sort => {"image_file_size"=> -1, "created_at" => -1 }}
class: ...>
有许多方法可以使用order_by!
irb(main):001:0> query.order_by("image_file_size DESC, created_at DESC")
其他方法:
irb(main):002:0> query.order_by(image_file_size: :desc, created_at: :desc)
irb(main):003:0> query.order_by(image_file_size: "desc", created_at: "desc")
irb(main):004:0> query.order_by(image_file_size: -1, created_at: -1)
irb(main):006:0> query.order_by([:image_file_size, -1], [:created_at, -1])
(This also accepts "desc", :desc)
irb(main):007:0> query.order_by(:image_file_size.desc, :created_at.desc)
=>
#<Mongoid::Criteria
selector: {}
options: {:sort=>{"image_file_size"=>-1, "created_at"=>-1}}
class: ...
embedded: ...>
编辑:查看API文档了解更多细节。