Los ayudantes de fecha/hora de Ruby son útiles, pero encontré una discrepancia. Parece que 12. meses no es igual a 1. años. Verifique 1.month y encontrará que es igual a 30.days y, por supuesto, 12 * 30.days = 360.days, 5.25 días menos que la duración real de un año.En Ruby, 12.months! = 1.year
Me encontré con esto cuando establecí el acceso a ciertos componentes de nuestro sitio web en función del número de meses concedidos, según lo especificado por el cliente. Descubrí que un término de 36 meses expiró un par de semanas antes al ejecutar mis pruebas. La solución fue algo como esto:
def months_to_seconds(number_of_months)
((number_of_months.to_f/12) * 1.year).to_i.seconds
end
Esto devuelve el número de segundos en cualquier fracción de un año está representado por los NUMBER_OF_MONTHS.
Como 1.year es igual en segundos a 365.25 días, ¿por qué supones que no tienen 1.meses para devolver los segundos para 1/12 de un año en lugar de 30 días?
¿Alguien ha encontrado esto antes? ¿Alguien tiene una solución mejor?
No relacionado, pero no necesita esa llamada 'to_f'; solo divida por '12.0'. –