2013-07-18 75 views
0

我有一個模型A,它使用Rails時間戳和一個名爲ttl的屬性,它表示每次更新記錄之間的時間(分鐘)。根據時間選擇記錄

我想選擇應該更新ERGO所有記錄:

WHERE (Time.now - updated_at).to_minutes > ttl) 

我一直在試圖使用Feed.where("(?-updated_at) > ttl", Time.now).to_a的變化,但我一直沒有成功。有人可以幫我查詢嗎?

回答

2

原因是,數據庫不能像計算算法那樣進行時間計算。
你必須使用數據庫的時間函數,不幸的是沒有標準。

在MySQL中,你可以使用

Feed.where("TIMESTAMPADD(MINUTE,ttl,updated_at)<?",Time.now) 
+0

升技惱人的有在開發中使用MySQL,但它就像一個魅力 – Artmann

+0

以及使用'SQLite'您可以用'那裏(「的strftime(」%Y-% m-%d%H:%i:%s',updated_at,'+'|| ttl ||'minutes')<?「,Time.now)'你可以使用Rails.env.development在兩個版本之間切換?正如我所說:不幸的是時間函數是數據庫依賴。 –