ruby on rails - rails - ¿Puede el uso crónico perjudicar su sentido del tiempo?
content_tag link_to rails (1)
Jaja..
Estoy usando Chronic para analizar el tiempo que los usuarios agregan en el calendario. Cuando el código funciona e implementa el momento adecuado, el resultado final es que, si un usuario agrega una hora, no tiene fecha y, como no tiene fecha, no se mostrará en los resultados. ¿Algunas ideas?
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
Editar:
Aquí está el tiempo provisto? método:
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
Primero, no estoy realmente seguro de qué está preguntando, porque parece que el código hace intencionalmente lo que describe ... Cuando hay tiempo, los campos de fecha se asignan a nil
. Y no creo que la culpa sea Crónica, porque así es como funciona su código.
No conociendo su diseño (por qué hay campos de fecha y hora separados), los tipos de campos, etc., sugeriría comenzar con un poco de kludge como este:
if time_provided?(self.natural_date)
self.time = Chronic.parse(self.natural_date)
self.date = self.time.to_date
o:
self.end_date = Chronic.parse(self.natural_date).to_date
if time_provided?(self.natural_date)
self.time = Chronic.parse(self.natural_date)
end
¿O tal vez el problema está fuera del código que proporcionó: en la parte responsable del comportamiento de "porque no tiene fecha, no se mostrará en los resultados"? ¿Quizás deberías hacer las condiciones más flexibles?