2013-11-01 86 views
0

我想查詢我的數據庫在某一天創建的任意模型的對象,有什麼好辦法做到這一點?搜索在特定日期創建的數據庫對象?

在一個sql查詢中,我使用以下來查詢昨天創建的對象。 (現在()AT TIME ZONE'EDT'):: DATE - 和'EDT'):: DATE

我想用ActiveRecord調用在ruby中做同樣的事情。

謝謝!

回答

-1

我會做數據庫上的演員和選擇當前日期還有,而不是用範圍來做。如果它在更多的地方使用,那麼一個這將是很好創建

Model.where("DATE(created_at) = ?", Date.today) 

:你可以用DATE(created_at)(將導致「2013年11月1日」),接着注入在哪裏帕拉姆做到這一點一個範圍爲Morner建議:

scope :created_today { where("DATE(created_at) = ?", Date.today) } 

用名:

scope :created_today_with_name lambda do |name| 
    where("DATE(created_at) = ? AND name = ?", Date.today, name) 
end 

或鏈條它:

scope :created_today_with_name lambda do |name| 
    where("DATE(created_at) = ?", Date.today).where(name: name) 
end 

然後稱其爲:

Model.created_today_with_name('Joe') 
+0

沒錯這是一個有點輕。讓我編輯它來澄清答案。 – Novae

+0

我知道這是另一個問題,但我怎麼能結合這個命令與另一個,以便我可以得到今天創建的所有對象,並有一個名稱包含「富」 – DogNibbler

+0

沒問題看到我調整的答案。 – Novae

3

一個例子,作爲一個範圍,所有項目今天創建的:

scope :created_today, -> { where('created_at between ? AND ?', Time.zone.now.beginning_of_day, Time.zone.now.end_of_day) } 

更多信息在PostgreSQL site