【问题标题】:Rails active record maintain order from array after findRails 活动记录在查找后维护数组中的顺序
【发布时间】:2014-03-15 00:33:38
【问题描述】:

我正在传递查找一个 id 数组,并且我希望将对象保持在与传递相同的顺序。我假设他们设置的顺序是模型中设置的主要顺序。

数组顺序

just items = [488800, 489404, 485616, 380112, 501101, 485606, 485612, 485619, 480304, 493609, 496200, 496203, 503000, 499111, 488802, 488825, 501700] 

活动记录给出的顺序

@item_recomendations = CatalogItem.find(just_items)
@item_recomendations.map {|x| x.id }
 => [380112, 480304, 485606, 485612, 485616, 485619, 488800, 488802, 488825, 489404, 493609, 496200, 496203, 499111, 501101, 501700, 503000] 

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:
    @item_recomendations = CatalogItem.find(just_items).sort_by{|x| just_items.index x.catalog_item_id }
    

    【讨论】:

      【解决方案2】:

      如果性能不是问题(您应该先试试这个并进行基准测试以证明它是),只需自己迭代数组:

      items.collect { |id| CatalogItem.find(id) }
      

      【讨论】:

        猜你喜欢
        • 2018-06-16
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-03
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        相关资源
        最近更新 更多