2012-07-17 93 views
0

我使用哈希條件和時間範圍從「Time.now」到-24小時的查詢。如何在時間範圍「Time.now」減x小時內顯示數據庫記錄?

@time_range = @time_now..(@time_now - 24*3600) 
Model.all(:conditions => { :created_at => (@time_range) }) 

此刻,所有數據庫記錄已超過24小時前創建,將不會顯示。顯示所有小於24小時「舊」的記錄。

我的目標是用來自數據庫列「持續時間」的變量替換常量值24。此列包含從24到1的整數值 - 具體取決於數據庫記錄在表單中的創建方式。

所以我需要訪問這個「持續時間」列。但我不知道在控制器中是如何做到的,因爲我沒有可用的模型實例。所以我不能例如說:

Model.duration*3600 

或:

:duration*3600 

任何暗示是非常讚賞。

PS:這個問題類似於another one。不幸的是,我在那裏找不到答案。

回答

0

那麼你認爲答案有點簡單。 Rails有一種內置的計算時間的方法系統。

如果你想每天回去你只需要做1.day.from_now或者你甚至可以做2.day.from_now

這將返回數據的時間戳。

1.day.from_now.beginning_of_day 

1.month.from_now.beginning_of_month 

1.month.from_now 

1.day.from_now 
+0

Thx。但我不確定,它正確回答了我的問題。我想用值爲1到24的變量替換24(小時)。此變量來自數據庫列「duration」。我希望,現在更清楚我的意思了。 還是要這樣說, \t「duration.from_now」 實際工作? – Naii 2012-07-18 22:43:05

0

此代碼可能更符合您的要求。不完全是你在說什麼,但我認爲它是圍繞你正在評論的同一個想法而建立的。希望它可以幫助。

def self.days_from_now(d) 
    self.where("due_date >= ? AND due_date <= ? ", d.day.from_now.beginning_of_day, d.day.from_now.end_of_day) 
end 
+0

哦,通過這種代碼在我的模型中,如果有任何混淆。 – Brandt 2012-07-26 05:44:32

+0

再次感謝。正如你所說,這不完全是我說的,而是一個好的開始。查詢會在午夜(00:00)和23:59之間給出結果。我會嘗試這種方法,並儘快給你進一步的反饋。 – Naii 2012-08-12 20:04:22

相關問題