2010-02-07 88 views
3

我有使用條件來拉一週的特定日子從表像這樣一個Rails named_scope:簡單的定製範圍在Ruby中

:conditions => [ 'EXTRACT(DOW FROM bookdate) IN (?)', (1..6).to_a ] 

的1..6日期範圍將取決於一個變量上產生這個SQL

(EXTRACT(DOW FROM bookdate) IN (1,2,3,4,5,6) 

我的問題用戶想要的日期,

是一週中的幾天都沒有一個簡單的範圍...即1..6正常工作(星期一.. .Sat),但是說6..2不會w ork正確地(星期六 - 星期二)...要麼作爲一個紅寶石範圍,要麼需要是6,7,1,2而不是6,5,4,3,2(假設6..2在ruby中工作,它沒有)。

如何爲每週的日子創建一個自定義範圍,以適應這樣的日期範圍?

任何想法?

感謝,

回答

7

如果你想有一個函數生成列入:conditions會像週六 - 週二範圍以及週一至週六的工作值的範圍怎麼樣:

def day_range(from, to) 
    if from <= to 
    (from..to).to_a 
    else 
    (from..7).to_a + (1..to).to_a 
    end 
end 

例如

irb(main):032:0> day_range(1, 6) 
=> [1, 2, 3, 4, 5, 6] 
irb(main):033:0> day_range(6, 2) 
=> [6, 7, 1, 2] 

然後,它只是一個將日期名稱映射到日期數字(如果需要)的情況。