Я новичок в Ruby и Ruby on Rails, и у меня есть данные в массиве, который является типом данных Date. Я пытаюсь сравнить даты с каждой датой в массиве, поэтому я использовал .fetch
, чтобы получить одну из дат, чтобы проверить ее с Date.today
, и это сработало. Но есть ли способ для выборки перебирать каждую дату в массиве?
Например:
act = [Tue, 30 Oct 2018, Tue, 30 Oct 2018, Tue, 30 Oct 2018, Tue, 30 Oct 2018, Tue, 30 Oct 2018, Tue, 30 Oct 2018, Tue, 30 Oct 2018, Sun, 01 Jul 2018]
act.fetch(0)
- это Tue, 30 Oct 2018
, и это тип данных Date.
Кроме того, если я не вызываю fetch и пытаюсь выполнить оператор block для итерации, я получаю сообщение об ошибке:
нет неявного преобразования даты в массив
РЕДАКТИРОВАТЬ 1: Когда я попытался выполнить итерацию, используя массив Array, каждый из которых выглядит следующим образом:
2.4.0 :001 > cted = Activity.pluck(:start_date).each do |acts|
2.4.0 :002 > if Date.today >= acts
2.4.0 :003?> Date.today
2.4.0 :004?> elsif acts > Date.today
2.4.0 :005?> acts
2.4.0 :006?> end
2.4.0 :007?> end
(1.0ms) SELECT "activities"."start_date" FROM "activities"
=> [Sun, 17 Jun 2018, Sun, 17 Jun 2018, Sun, 17 Jun 2018, Sun, 17 Jun 2018, Sun, 17 Jun 2018, Sun, 17 Jun 2018, Sun, 15 Apr 2018, Tue, 26 Jun 2018]
Возвращает массив, когда я пытался его использовать.
def closer_to_end_date
Activity.pluck(:start_date).each do |acts|
if Date.today >= acts
Date.today
elsif acts > Date.today
acts
end
end
end