2011-07-07 65 views
1

對於一個項目,我目前正在處理用戶需要能夠添加特定日期,每週日期(例如每週三12點)或每月日期(例如每個日期本月1日下午8點)。 日期是用戶搜索的主要內容。而且第一個即將到來的日期是最重要的。Ruby on Rails和MySQL插入和選擇每週事件

想了一會兒,但我不確定該去哪裏。這是我想出的:

爲給定日期添加一定數量的記錄,並每天或每週更新這些記錄。

這裏的問題是,當用戶搜索2020並且記錄沒有被添加時,我該怎麼辦,因爲從現在開始這麼長時間。或者如果時間改變了會怎麼樣。我如何輕鬆找回正確的記錄?

回答

1

我不認爲爲每個日期添加多個條目是可行的解決方案,部分原因是由於您所描述的問題。它也有可能成爲吹出數據庫大小的一種非常快速的方式,特別是在有很多用戶/日期的情況下。

我的第一個想法是從這個時間戳列移開。這部分是因爲您不必創建多個記錄,而且還可以更輕鬆地查詢。

我會把邏輯單元分成不同的列。這樣的事情,對你的日期說明:

id | wday | mday | hour | minute | 
---------------------------------- 
1 | 3 | NULL | 12 | 00  | 
2 | NULL | 1 | 20 | 00  | 

這樣,那將是很容易讓你找到週三(Model.where(:wday => 3))或第一個月(Model.where(:mday => 1))每一個日期,它也將允許您可以顯示任何給定年份,月份或周等的結果,以供永恆的其餘時間使用。

+0

聽起來不錯..我相信cronjobs也是這樣工作的..謝謝! –