【发布时间】:2016-02-09 05:22:15
【问题描述】:
我正在构建一个测验应用程序。假设我有四个测验(应该在下午 5 点、下午 6 点、晚上 7 点和晚上 8 点运行),我通过在 Quiz 模型中设置一个名为 game_start 的 .datetime 来表示它。
接下来,我想在 接下来的 3 个测验 在日期时间之前向用户显示。我知道我可以通过比较 game_start 和 Time.now 来做到这一点,如下所示:
<p>Upcoming Game #1: <%= Quiz.where("game_start >= ?", Time.now).order(game_start: :asc).first.topic %></p>
<p>Upcoming Game #2: <%= Quiz.where("game_start >= ?", Time.now).order(game_start: :asc).second.topic %></p>
我发现有人在 this answer 中遇到了类似的问题,但他们并没有尝试返回多个匹配项。
所以它有点工作,但这并不遵循 DRY。是否可以指定我要返回最接近Time.now 的前三个结果,而不是单独执行它们?
【问题讨论】:
标签: ruby-on-rails