Ponieważ używasz Rails, będę zakładać, że masz te pliki, co odpowiada Lokalizacje zasobu:
app/views/locations/index.html.erb
app/controllers/locations_controller.rb
app/models/location.rb
Istnieje kilka alternatyw ActiveRecord dla zapytań rekordy w ciągu ostatnich 24 godzin:
W tym przykładzie przedstawiono koncepcję, w której można określić zakres dla zapytań o kolumny znaczników czasowych.
@locations = Location.where(updated_at: (Time.now - 24.hours)..Time.now)
Jak zauważył w komentarzach poniżej, mogą być ułamek sekundy błędu precyzji z powyższym zapytaniu. Możesz przechowywać zmienną, now = Time.now
, aby upewnić się, że Twoje zapytanie obejmuje dokładnie 24 godziny.
now = Time.now
@locations = Location.where(updated_at: (now - 24.hours)..now)
Można wyeliminować operację odejmowania i niech Szyny obsługiwać go za ciebie, co może również spowodować nieznaczne odsunięcie od dokładnego oknie 24 godzin.
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
Można również zrezygnować składnię hash w parametrach where
, przekazując ciąg SQL, która filtruje z operatorem >
porównania.
@locations = Location.where('updated_at > ?', 24.hours.ago)
W kontrolerze, dodać akcję indeksu, z preferowanym podejściem zapytania:
def index
@locations = Location.where(updated_at: 24.hours.ago..Time.now)
end
Państwa zdaniem, należy dodać następujące wiersze:
<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>
dlaczego 120.day ? Czy to pytanie zostało zmodyfikowane? –
Nie, nie było. To był tylko kolejny przypadek. Zaktualizowałem odpowiedź, aby użyć "24 godziny" do uzgodnienia z Q. Dzięki za sprawdzenie! – sealocal
Działa również: 'Location.where (updated_at: 1.day.ago..Time.now)' – Adobe