2014-04-04 73 views
8

我試圖列出記錄最近創建的位置視圖或從過去24小時使用activerecord更新的記錄,但是我需要一些初學者開發人員的幫助。過去24小時內導軌列表創建/更新記錄

有沒有人知道在控制器/視圖中實現此解決方案?先謝謝您的幫助。

回答

23

由於您使用Rails的,我會假設你有這些文件,對應於位置的資源:

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

有在過去24小時內查詢記錄數ActiveRecord的選擇:

  1. 此示例演示了您可以指定查詢時間戳列的範圍的概念。

    @locations = Location.where(updated_at: (Time.now - 24.hours)..Time.now) 
    
  2. 正如在下面的評論中指出的,上述查詢可能會有一小部分精度錯誤。您可以存儲變量now = Time.now,以確保您的查詢跨越24小時。

    now = Time.now 
    @locations = Location.where(updated_at: (now - 24.hours)..now) 
    
  3. 你可以消除減法運算,並讓Rails的爲您處理它,這也可能會導致輕微的24小時的精確窗口偏移。

    @locations = Location.where(updated_at: 24.hours.ago..Time.now) 
    
  4. 你也可以放棄在where參數哈希語法,傳遞,與>比較運算過濾SQL字符串。

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

在你的控制器中添加一個索引操作,用您的首選查詢方法:

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

在您看來,添加這些行:

<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

爲什麼120.day ?問題是否修改? –

+0

不,它不是。那只是另一個隨機的例子。我更新了答案,使用'24.hours'與Q協議。感謝您檢查! – sealocal

+0

也可以工作:'Location.where(updated_at:1.day.ago..Time.now)' – Adobe

相關問題