0
我試圖用scope
來挑選今天發生的事件,並在接下來的7天內使用它們的開始日期和結束日期(我還處理UTC + 7的時區) :活動記錄日期範圍選擇
# scopes for date_start within 7 days on either side
t = Time.now.in_time_zone("Bangkok")
scope :seven_days, lambda { where("date_start <= ? AND date_start >= ?", t+7.days, t-7.days) }
因此,這個選項會在最近7天內啓動並在接下來的7天內啓動。但是我怎樣才能找到一些正在運行的東西,比如2個月前,2個月後呢?所以它在未來7天(今天)仍然活躍,但在範圍之外開始和結束?
謝謝!
謝謝Fabian_Winkler。你能解釋一下這背後的邏輯嗎?我不明白OR如何在這裏工作。 – matski
所以讓我們使用圓括號來使邏輯更加明顯: '(date_start≥?AND date_start≤?)OR(date_start≤?AND date_end≥?)' 第一部分選擇在過去7天內開始的所有事件,在未來7天內開始。 第二部分將選擇7天前開始的所有活動,並將在7天以上結束。 「OR」運算符(也稱爲邏輯析取)將兩個子集連接起來。 –
好,太好了。似乎工作。謝謝! – matski