Tengo una tabla de ofertas y necesito encontrar registros donde la fecha coincida con la fecha de hoy.Buscar registros con fecha y hora que coincidan con la fecha de hoy - Ruby on Rails
Desde la consola de rieles, el campo de fecha que necesito para emparejar se ve así. He asignado un registro para tratar para la prueba.
ruby-1.9.2-p0 > deal.start
=> Tue, 10 May 2011 00:00:00 UTC +00:00
Si trato de encontrar los registros que coincidan con la fecha de inicio hoy como esto me sale nula
ruby-1.9.2-p0 > Deal.find_by_start(Date.today)
=> nil
entonces pensé que podría coincidir mediante la conversión de Date.today a una fecha y hora.
ruby-1.9.2-p0 > Date.today.to_datetime
=> Tue, 10 May 2011 00:00:00 +0000
ruby-1.9.2-p0 > Deal.find_by_start(Date.today.to_datetime)
=> nil
¿Cómo puedo hacer que funcione? Estoy usando Rails 3.
Editar: pensé en convertir a los dos a un formato coherente, que serán las obras, pero no cuando se trata de utilizar el método find_by_start
ruby-1.9.2-p0 > deal.start.strftime("%a, %e %B %Y") == Date.today.strftime("%a, %e %B %Y")
=> true
ruby-1.9.2-p0 > Deal.find_by_start.strftime("%a, %e %B %Y") == Date.today.strftime("%a, %e %B %Y")
NoMethodError: undefined method `strftime' for nil:NilClass
Gracias. Esto funciona muy bien y lo usaré a corto plazo y veré la refacturación de mi código para mejorar el rendimiento. Gracias por tu ayuda. –
También hay una versión más sucinta usando rangos. @deals = Deal.where (start: DateTime.now.beginning_of_day .. DateTime.now.end_of_day) –
Me parece que 'Deal.where (start: Time.zone.now.midnight)' también funciona. –