2016-03-10 3 views
0

В рельсах у меня есть таблица событий. Я хочу выполнить следующий тип заказа для своих событий, показывая его пользователям на индексной странице.Рельсы заказать по дате - времени и расстоянию

  1. Я хочу найти все события рядом с местоположением (для этого я использую геокодер), тогда я хочу заказать все эти близлежащие события в соответствии с ближайшей датой до текущей даты. Я использую следующий код для него:

Event.near (center_location) .где ("started_at < =?", Date.today) .reorder ("started_at DESC")

  1. Я хочу показать все остальные события, упорядоченные по расстоянию.

У меня есть код

Event.with_distance_to (center_location) .limit (limit_of_search) .reorder ("# { 'расстояние'} ASC")

Моя проблема Я хочу выполнить второй этап по остальным событиям, оставшимся после первого шага Пожалуйста, предложите Заранее спасибо.

+1

Вы можете получить все и сделать свой первый список с («? Started_at <=», Date.today) , а затем вернуть все - the_first_set для второй части? –

+0

@JoeEssey да, я могу это сделать. Можете ли вы предложить код? – Adt

+0

Adt, помог ли код в достижении вашей цели? Не могли бы вы принять его, если так? –

ответ

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 
Смежные вопросы