1

我在 Rails 应用程序上使用 ElasticSearch 和耐嚼的 GEM。我会帮忙翻译一下:

all.select { |task|
 (task.start_at.to_date..task.end_at.to_date).cover?(Date.today)
}

使用有嚼劲的过滤器。我尝试长时间完成这项工作,但没有成功。

任何形式的帮助都会很棒。

谢谢

4

2 回答 2

1

我知道它已经很长时间了,但我现在正在使用 Chewy gem,所以它是这样的:

假设您有一个明确定义为类型和格式TasksIndex正确的withstart_at和字段:end_atdate

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在结果上使用 a 。它会处理你的结果。

于 2015-09-17T14:17:56.497 回答
0

此代码遍历集合“all”。对于每个项目,如果今天在任务的执行时间范围内(它今天的日期在 begin_at 和 end_at 范围之间),它检查并返回 true,即是否应该执行任务。

于 2014-12-13T12:43:07.920 回答