1

我試圖獲取具有日期範圍的記錄(事件)(例如,日期範圍內的event_startevent_end),因此用戶可以查詢所有事件是分別與天A和B.一天內如何查詢日期範圍A或日期範圍B內的記錄

如果滑軌5將產品尚未推出,我可以用.or,但如何寫這爲Rails 4?

d = Date.today 
Event.all.where(:date_start => d.beginning_of_week..d.end_of_week).or.where(:date_end => d.beginning_of_week..d.end_of_week) 

更新

我認爲arel完成這項工作。

+2

[May be of help](http://stackoverflow.com/q/31096009/3444240) – potashin

+0

謝謝!我要去嘗試一下。 – Slevin

回答

1

喜歡的東西:

Event.all.where('date_start >= ? AND date_end < ?', event_start, event_end) 

你可能需要增加一天以event_end如果是同一天,你的範圍的最後一天,以便比不小於排除的那一天,如:

event_end + 1.days 

另一種方法是使用BETWEEN

Event.all.where('date_start BETWEEN ? AND ? AND date_end BETWEEN ? AND ?', event_start, event_end, event_start, event_end) 
+1

從來沒有聽說過'BETWEEN',非常感謝! – Slevin

+0

沒問題,很樂意幫忙 – martincarlin87

0

試試這個: -

d = Date.today 
date_week = d.beginning_of_week..d.end_of_week 
Event.where('date_start = ? OR date_end = ?', date_week, date_week) 

希望這可能有幫助!