如何获得比今天更大的两个日期字段并跳过nil字段?

时间:2014-06-05 08:30:17

标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid mongoid3

如何查询两个日期字段以获取文件包含比现在更大的现有: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查询就是例外。对不起,我很抱歉。

1 个答案:

答案 0 :(得分:1)

当你使用any_of时,它甚至会选择具有nil值的那些。试试这个

scope :upcoming, -> { where(:once_at.gte => Date.today.beginning_of_day, :start_at.gte => Date.today.beginning_of_day) }