2010-08-08 92 views
0

在Rails中按日期搜索的最佳方式是什麼?

最好的方式來實現一個簡單的搜索軌道檢索所有模型具有相同的日期?

例如檢索所有客戶的生日日期23-10-1975,這將是一個日期格式。

create_table "customer", :force => true do |t| 
    t.string "f_name" 
    t.string "m_name" 
    t.string "l_name" 
    t.date  "date_of_birth" 
end 

回答

3

要祝賀今天過生日的所有用戶我相信? 好吧,我不是一個開發機器上了,所以我不能測試,但我會去這樣的事情:

@bday_customers = Customer.find(:all, :conditions => { :birthday => Date.today }) 

甚至

@bday_customers = Customer.find(:all, :conditions => { :birthday => (Date.today)..(Date.today + 2.weeks) }) 

這將導致您的數據庫將爲此類搜索進行優化而完成工作。

+0

我希望能夠按出生日期在索引頁中搜索客戶。即使用視圖中的date_select檢索出生日期爲bla bla bla等的所有客戶? – 2010-08-08 23:30:52

+0

那麼,只需用date_select中的給定params值替換'Date.today'即可。但是除非你想在搜索一個特定的日期時玩彩票,我建議我在第二個例子中使用的範圍選項。 – Rock 2010-08-08 23:38:36

+0

我從date_select返回的日期格式是一個像這樣的散列{「(1i)」=>「2010」,「(2i)」=>「8」,「(3i)」=>「16」},我如何將它轉換爲日期格式,以便在條件中使用它?謝謝 – 2010-08-17 14:40:27

1

假設date是一個23-10-1975形式的字符串,然後像這樣;

Customer.all(:conditions => { :date_of_birth => Date.strptime(date, '%d-%m-%Y') }) 
+0

對不起,我的問題非常模糊,我更新了問題。即時通訊不太熟悉導軌,但日期不是字符串格式。它的日期。 – 2010-08-08 23:29:09

+0

@我明白數據庫字段是日期而不是字符串。我正在討論的字符串是您通過'date_select'從用戶提交表單中獲得的格式 – bjg 2010-08-08 23:40:15

+0

抱歉,我並不真正瞭解您的意思。我的錯。感謝你的回答。 – 2010-08-08 23:56:09

相關問題