【问题标题】:Rails: Query to sort record by number except 0Rails:查询以除0以外的数字对记录进行排序
【发布时间】:2017-10-31 17:41:49
【问题描述】:

我正在根据优先级(升序)排列数据,其中“0”在优先级排序中被忽略。

下面是 Rails 查询:

Profile.where(active: true).order(:priority).pluck(:priority)

此查询返回优先级从“0”开始的有序记录列表

[0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 7]

您能帮我弄清楚如何按照下面的示例对查询中添加“0”记录的数据进行排序。

Example: [1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 7, 0]

【问题讨论】:

    标签: ruby-on-rails rails-activerecord


    【解决方案1】:

    您可以将字符串传递给 #order 以使用原始 SQL,这样您就可以说:

    Profile.where(active: true)
           .order('case priority when 0 then 1 else -1 end, priority')
           .pluck(:priority)
    

    强制优先级为零的条目结束。当然,您不必使用1-1 作为数字,您可以使用任何对您可读并按正确顺序排序的内容,您甚至可以使用字符串(当然,假设它们正确排序):

    .order("case priority when 0 then 'last' else 'first' end, priority")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多