поиск ближайшей записи по времени в рубине - PullRequest
2 голосов
/ 29 июля 2011

Следующий код работает, но выглядит не совсем как в рубине, поэтому я ищу лучший способ добиться того же.

#Grab the events from the page 
  events = page.events.sort_by{|e| e.start_time}

  upcoming = []
  past = []

  events.each do |e|
    if e.start_time >= Time.now
      upcoming.push(e)
    end
    if e.start_time < Time.now
      past.push(e)
    end
  end

 # show the most nearest event (current events if exist)
 event_to_show = (upcoming.count < 0) ? upcoming.first : past.last

1 Ответ

4 голосов
/ 29 июля 2011

Вы можете использовать метод partition для упрощения кода.

http://www.ruby -doc.org / core / classes / Enumerable.html # M001496

events = page.events.sort_by(&:start_time)

upcoming, past = events.partition{|e| e.start_time >= Time.now}

event_to_show = (upcoming.count < 0) ? upcoming.first : past.last
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...