2014-04-04 12 views

Antwort

23

Da Sie Rails verwenden, nehme ich an, dass Sie diese Dateien haben, entsprechend einer Ressource Standorte:

app/views/locations/index.html.erb 
app/controllers/locations_controller.rb 
app/models/location.rb 

Es gibt ein paar Alternativen für Active Aufzeichnungen in den letzten 24 Stunden Abfrage:

  1. In diesem Beispiel wird das Konzept veranschaulicht, dass Sie einen Bereich zum Abfragen der Zeitstempelspalten angeben können.

    @locations = Location.where(updated_at: (Time.now - 24.hours)..Time.now) 
    
  2. Wie bereits in den Kommentaren unten aus, kann es mit der obigen Abfrage ein Bruchteil einer Sekunde Genauigkeit Fehler. Sie können eine Variable now = Time.now speichern, um sicherzustellen, dass Ihre Abfrage genau 24 Stunden umfasst.

    now = Time.now 
    @locations = Location.where(updated_at: (now - 24.hours)..now) 
    
  3. Sie könnten die Subtraktionsoperation beseitigen und lassen Sie Rails behandeln es für Sie, die auch in einem leichten von einer exakten Fenster 24 Stunden versetzt führen kann.

    @locations = Location.where(updated_at: 24.hours.ago..Time.now) 
    
  4. Sie können auch die Hash-Syntax in der where Parameter verzichten, eine SQL-Zeichenfolge geben, die mit dem Operator > Vergleich filtert.

    @locations = Location.where('updated_at > ?', 24.hours.ago) 
    

In Ihrem Controller, einen Index Aktion, mit Ihrem bevorzugten Abfrage Ansatz hinzu:

def index 
    @locations = Location.where(updated_at: 24.hours.ago..Time.now) 
end 

Ihrer Ansicht nach fügen Sie folgende Zeilen:

<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> 
+0

warum 120.day ? Wurde die Frage geändert? –

+0

Nein, war es nicht. Das war nur ein weiteres zufälliges Beispiel. Ich habe die Antwort aktualisiert, um '24. Stunden' für die Vereinbarung mit dem Q zu verwenden. Danke für die Überprüfung! – sealocal

+0

Funktioniert auch: 'Location.where (updated_at: 1.day.ago..Time.now)' – Adobe

Verwandte Themen