Ха-ха..
Я использую Хронический для парсинга пользователей времени, добавляют в Календаре. Где код работает и реализует правильное время, конечный результат состоит в том, что, ЕСЛИ пользователь добавляет время, то он не имеет никакой даты, и потому что он не имеет никакой даты, он не покажет в результатах. Какие-либо идеи?
def set_dates
unless self.natural_date.blank? || Chronic.parse(self.natural_date).blank?
# check if we are dealing with a date or a date + time
if time_provided?(self.natural_date)
self.date = nil
self.time = Chronic.parse(self.natural_date)
else
self.date = Chronic.parse(self.natural_date).to_date
self.time = nil
end
end
unless self.natural_end_date.blank? || Chronic.parse(self.natural_end_date).blank?
# check if we are dealing with a date or a date + time
if time_provided?(self.natural_end_date)
self.end_date = nil
self.end_time = Chronic.parse(self.natural_end_date)
else
self.end_date = Chronic.parse(self.natural_end_date).to_date
self.end_time = nil
end
end
end
Править:
Вот time_provided? метод:
def time_provided?(natural_date_string)
date_span = Chronic.parse(natural_date_string, :guess => false)
(date_span.last - date_span.first).to_i == 1
end
Во-первых, я не совсем понимаю, о чем вы спрашиваете, потому что это выглядит например, код намеренно делает то, что вы описываете ... Когда указано время, полям даты присваивается nil
. И я не думаю, что виноват Chronic, потому что так работает ваш код.
Не зная вашего дизайна (почему есть отдельные поля даты и времени), типов полей и т. Д., Я бы посоветовал начать с небольшой путаницы вроде этого:
if time_provided?(self.natural_date)
self.time = Chronic.parse(self.natural_date)
self.date = self.time.to_date
или:
self.end_date = Chronic.parse(self.natural_date).to_date
if time_provided?(self.natural_date)
self.time = Chronic.parse(self.natural_date)
end
Или, может быть, проблема во внешней стороне предоставленный вами код: в той части, которая отвечает за поведение «поскольку у него нет даты, он не будет отображаться в результатах»? Может быть, вам стоит сделать условия более гибкими?