【问题标题】:How to make find return in the same order?如何使查找返回以相同的顺序?
【发布时间】:2013-05-26 22:06:42
【问题描述】:

考虑一下:

ids = [14195, 6053, 53119, 7513, 5161, 43252, 7633, 627, 54644, 1438]

Foo.find(ids).map(&:id) 返回:

[627, 1438, 5161, 6053, 7513, 7633, 14195, 43252, 53119, 54644]

我有什么方法可以让find 以与输入相同的顺序返回结果?即:

[14195, 6053, 53119, 7513, 5161, 43252, 7633, 627, 54644, 1438]

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord


    【解决方案1】:

    参考this

    Foo.where(:id => ids).order("field(id, 627, 1438, 5161, 6053, 7513, 7633, 14195, 43252, 53119, 54644").map(&:id)
    

    或与where

    Foo.where(:id => ids).order("field(id, #{ids.join(',')})").map(&:id)
    

    或与find

    Foo.find(ids, :order =>"field(id, #{ids.join(',')})").map(&:id)
    

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      相关资源
      最近更新 更多