按日期 - 时间和距离排序的导轨

时间:2016-03-10 19:51:52

标签: sql ruby-on-rails postgresql

在rails中我有一个事件表。我希望在索引页面上向用户显示时,对我的事件执行以下类型的排序。

  1. 我想找到一个地点附近的所有活动(我正在使用Geocoder)然后我想根据最近的日期到当前日期订购所有这些附近的活动。 我正在使用以下代码:
  2.   

    Event.near(center_location).where(“started_at< =?”,   Date.today).reorder(“started_at DESC”)

    1. 我想展示按距离排序的所有剩余事件。
    2. 我有代码

        

      Event.with_distance_to(center_location).limit(limit_of_search).reorder(“#{ '距离'}   ASC“)

      我的问题是我想在第一步后剩下的其他事件上执行第二步 请建议 提前谢谢。

1 个答案:

答案 0 :(得分:2)

all_events = Event.all
nearby_events = all_events.where("started_at <= ?", Date.today).reorder("started_at DESC")
other_events = (all_events - nearby_events).limit(limit_of_search).reorder("#{'distance'} ASC") 

如果你想将它们重新附加在一起作为单个数组返回:

return nearby_events + other_events