如何查询两个日期字段以获取文件包含比现在更大的现有:once_at
和:start_at
,如果此字段为零,则跳过文档?其中:once_at
和:start_at
总是单独出现。在我的示例中,使用all_of
的第二个查询不会返回任何结果,但在下面列出的代码中,不幸的是,:start_at
和:once_at
的所有文档都是零。
scope :upcoming, -> { any_of(:once_at.ne => nil, :start_at.ne => nil).any_of(:once_at.gte => Date.today, :start_at.gte => Date.today) }
解决:
在终端我可以看到实际查询也得到:start_at => nil
。
我最近开始使用范围,只是意识到default_scope有选项来获取:start_at => nil
的文档,所以我发现没有default_scope查询就是例外。对不起,我很抱歉。
答案 0 :(得分:1)
当你使用any_of时,它甚至会选择具有nil值的那些。试试这个
scope :upcoming, -> { where(:once_at.gte => Date.today.beginning_of_day, :start_at.gte => Date.today.beginning_of_day) }