Ho una tabella di offerte e ho bisogno di trovare i record in cui la data corrisponde alla data odierna.Trova record con Datetime corrispondenti alla data odierna - Ruby on Rails
Dalla console di rails, il campo della data che devo corrispondere è simile a questo. Ho assegnato un record da trattare per i test.
ruby-1.9.2-p0 > deal.start
=> Tue, 10 May 2011 00:00:00 UTC +00:00
Se cerco di trovare tutti i record corrispondenti alla data di inizio con l'oggi in questo modo ottengo nulla
ruby-1.9.2-p0 > Deal.find_by_start(Date.today)
=> nil
poi ho pensato che avrei potuto abbinare convertendo Date.today ad un datetime.
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
Come posso farlo funzionare? Sto usando Rails 3.
Edit: ho pensato a loro sia la conversione in un formato coerente, che saranno le opere, ma non quando si cerca di utilizzare il metodo di 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
Grazie. Funziona alla grande e userò questo a breve termine e guarderò il refactoring del mio codice per migliorare le prestazioni. Grazie per l'aiuto. –
Esiste anche una versione più succinta che utilizza gli intervalli. @deals = Deal.where (inizio: DateTime.now.beginning_of_day .. DateTime.now.end_of_day) –
Sto trovando che 'Deal.where (start: Time.zone.now.midnight)' funziona anche. –