Dal momento che si sta utilizzando Rails, vi si presuppone che questi file, che corrisponde ad una risorsa Sedi:
app/views/locations/index.html.erb
app/controllers/locations_controller.rb
app/models/location.rb
ci sono alcune alternative ActiveRecord per interrogare i record nelle ultime 24 ore:
Questo esempio dimostra il concetto che è possibile specificare un intervallo per l'interrogazione delle colonne timestamp.
@locations = Location.where(updated_at: (Time.now - 24.hours)..Time.now)
Come sottolineato nei commenti qui sotto, ci può essere una frazione di secondo errore di precisione con query precedente. È possibile memorizzare una variabile, now = Time.now
, per garantire che la query si estenda esattamente per 24 ore.
now = Time.now
@locations = Location.where(updated_at: (now - 24.hours)..now)
Si potrebbe eliminare l'operazione di sottrazione e lasciare Rails gestire per voi, che può anche tradursi in un offset da una finestra esatto di 24 ore leggera.
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
Si può anche rinunciare alla sintassi di hash nei parametri where
, passando una stringa SQL che filtra con l'operatore >
confronto.
@locations = Location.where('updated_at > ?', 24.hours.ago)
nel controller, aggiungere un'azione di indice, con il suo approccio interrogazione preferita:
def index
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
end
Secondo lei, aggiungere queste righe:
<table>
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Created_At</th>
<th>Updated_At</th>
</tr>
</thead>
<tbody>
<% @locations.each do |location| %>
<tr>
<td><%= location.id %></td>
<td><%= location.name %></td>
<td><%= location.created_at %></td>
<td><%= location.updated_at %></td>
</tr>
<% end %>
</tbody>
</table>
perché 120.day ? La domanda è stata modificata? –
No, non lo era. Quello era solo un altro esempio casuale. Ho aggiornato la risposta per utilizzare "24.ora" per accordo con la Q. Grazie per il controllo! – sealocal
Funziona anche: 'Location.where (updated_at: 1.day.ago..Time.now)' – Adobe