Подтвердить что ты не робот

Может ли использовать Хронический ущерб вашему чувству времени?

Хаха..

Я использую Chronic для анализа времени добавления пользователей в Календарь. Когда код работает и реализует нужное время, конечным результатом является то, что, если пользователь добавляет время, то у него нет даты, а поскольку он не имеет даты, он не будет отображаться в результатах. Любые идеи?

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

Edit:

Вот время_представитель? Метод:

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
4b9b3361

Ответ 1

Во-первых, я не совсем уверен, о чем вы спрашиваете, потому что это похоже на то, что код намеренно делает то, что вы описываете... Когда время предоставлено, поля даты назначаются nil. И я не думаю, что это Хронический, потому что это работает с вашим кодом.

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

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

Или, может быть, проблема находится вне кода, который вы указали: в части, которая отвечает за "потому что у нее нет даты, она не будет отображаться в результатах"? Может быть, вы должны сделать условия более гибкими?