Si quiero manipular una fecha y hora para que esté en un formato más legible, ¿debería hacerlo en el modelo o en la vista?

De hecho, no estoy de acuerdo con ponerlo en un modelo, ya que no es un atributo de datos. Es un problema de formato.

Lo que me lleva a 2 posibles opciones:

1) Es un método auxiliar. Sirve para indicar cómo se ve la fecha. Por lo general, y esto es algo ‘habitual’, sigo esta ruta porque un método auxiliar, especialmente en el nivel de aplicación, generalmente cubre todas las bases. Solo pretty_date (start_date), pretty_date (end_date) y listo. Pero, de nuevo, no creo que sea particularmente difícil (aunque, siempre un poco torpe) para las fechas de strftime, que es esencialmente lo que estaría haciendo en el método auxiliar, simplemente haciendo que sea fácilmente repetible. No diría que sería una violación terrible de DRY seguir usando strftime, pero, si está usando strftime junto con la interpolación, entonces, sí, un método auxiliar funcionaría.

2) Es un módulo extraíble sobre cómo manejar objetos típicos de DateTime. Si lo maneja de esta manera en más de un modelo (que creo que es muy común), definitivamente es algo que no querría incluir en el modelo (específicamente), sino un módulo para este propósito previsto, y extenderlo a Los modelos que lo requieren. Pero, solo sugeriría este método si tiene la intención de usarlo fuera de las vistas, donde los datos que tiene, como atributo, son relevantes.

PRIMA:

3) Extienda DateTime. Esta también es una opción si la está utilizando en toda la aplicación.

Definitivamente lo pondré en el modelo para SECAR su código. Si necesita su valor @readable_time en diferentes lugares, le ahorrará tiempo. Si alguna vez desea cambiar la forma en que muestra la hora, digamos del 29 de enero de 2015 al 29 – 01 – 2015, solo tendrá que cambiar un par de líneas en su modelo en lugar de pasar por cada vista que implementa la transformación.

Espero que esto ayude,

Si es un formato que podría necesitar nuevamente, seguiría la regla general de No repetirme y escribiría un método en el modelo para proporcionar la fecha convertida y llamar a ese método desde la vista. Si es un formato que podría usar en otras fechas en diferentes modelos, definiría ese formato en algún lugar centralizado, tal vez en un archivo de configuración para que pueda ser encontrado y cambiado fácilmente si es necesario.

Esto significa que si algún día quiero usarlo en otro lugar o incluso enviar un correo electrónico con ese formato de fecha en el mensaje, ya estoy listo.

Supongo que si va a usar este formato en varios modelos en una aplicación, tendría sentido usar una subclase de un padre que tenga definidos los métodos adicionales.