我在Rails應用程序上使用具有耐嚼的GEM的ElasticSearch。我會幫助一些翻譯:耐嚼寶石 - 查詢獲取包含特定日期的日期範圍
all.select { |task|
(task.start_at.to_date..task.end_at.to_date).cover?(Date.today)
}
使用耐嚼的過濾器。我試着長時間做這項工作,但沒有成功。
任何形式的幫助都會很棒。
謝謝
我在Rails應用程序上使用具有耐嚼的GEM的ElasticSearch。我會幫助一些翻譯:耐嚼寶石 - 查詢獲取包含特定日期的日期範圍
all.select { |task|
(task.start_at.to_date..task.end_at.to_date).cover?(Date.today)
}
使用耐嚼的過濾器。我試着長時間做這項工作,但沒有成功。
任何形式的幫助都會很棒。
謝謝
此代碼迭代集合「全部」。對於它檢查的每個項目,如果today是在任務的執行時間範圍內(它的當前日期介於begin_at和end_at範圍之間),即如果任務應該執行,則返回true。
我知道它是一個漫長的時間,但我現在與耐嚼的寶石的工作,所以這裏有雲:
假設你有一個TasksIndex
與start_at
和良好定義爲date
類型end_at
領域,用正確的format:
field :start_at, type: 'date', format: 'basic_date_time_no_millis' # example, you can use other formats
field :end_at, type: 'date', format: 'basic_date_time_no_millis'
那麼你的過濾器可以是這樣的:
def tasks_including_date(target_date)
formatted_target_date = target_date.strftime('%Y-%m-%d')
TasksIndex.filter{start_at <= formatted_target_date}.filter{end_at >= formatted_target_date}
end
那麼你可以:
tasks_including_date(Date.today)
如果你想要的結果本身,而不是僅僅是過濾範圍,只是對結果使用to_ary
。它會處理你的結果。
是的,這就是代碼的作用。我會將其翻譯爲elasticsearch查詢。 – elf 2014-12-13 12:49:10
UsersIndex.filter {〜(start_at.to_date <= Date.today)&(end_at.to_date> = Date.today)} – 0e1val 2014-12-13 13:31:02