2013-02-12 68 views
1

這是我的問題,我會盡量簡潔。太陽黑子 - 在多個日期範圍內搜索

我有一個模型Coursehas_manyPlanning。 A Planning有一個start_date和一個end_date

我想檢索(與太陽黑子)所有Courses有一個特定的start_dateend_date之間的特定計劃。

的問題是,如果我存儲在模型Course

searchable do 
    date :start_date, multiple: true do 
    plannings.map(&:start_date) 
    end 

    date :end_date, multiple: true do 
    plannings.map(&:end_date) 
    end 
    ... 
end 

我失去的事實,start_dateend_date是夫婦。

有沒有一種方法/技巧來存儲範圍?

回答

1

幾乎具有

searchable do 
    date :course_date, multiple: true do 
    plannings.map{|p| (p.start_date..p.end_date).to_a} 
    end 
    ... 
end 
:同樣的問題,在我的情況下,起始日期日期和結束日期是不是一個真正的日期,僅僅一年(整數),使用多值字段的範圍解決它

因此course_date包含課程進行的所有年份。如果你有2001-2003和2005-2007(2001,2002,2003,2005,2006,2007)和equal_to搜索。

0

一種可能性是讓您的查詢分兩次。首先找到計劃,然後找到通過ID限制課程的課程。

也許不是一個非常優化的一個,但爲什麼試圖儘快優化...

或者索引小時功能:

def happens_between_8_and_9 
    return true if start_date > 8.. 
end 

searchable do 
    boolean :happens_between_8_and_9 
    boolean :happens_between_9_and_10 
end 

```

+0

我會盡力! 我不能做第二個命題,因爲我正在處理日期而不是時間。但有趣的把戲! – 2013-02-12 13:53:03