【发布时间】:2015-02-03 21:28:51
【问题描述】:
我有一个带有日期列的 Rails 模型 DailyAssignment,并且想查找今天之后没有关联 DailyAssignment 的第一个日期。
例如,如果我今天有实例,明天没有实例,后天有实例,则此方法应在明天返回。
如果我要在 Ruby 中执行此操作,它会是这样的:
(Date.today..1.year.since.to_date).find do |date|
DailyAssignment.where(date: date).empty?
end
这还可以,因为它会在找到记录后终止迭代,但有两个问题:
- 在 Ruby 中遍历集合很慢。
- 除非有某种
while构造,否则我需要指定一个“结束”日期。
在 PostgreSQL 中是否有一种很好、有效的方法来做到这一点?
【问题讨论】:
-
自从我的 postgres 天以来已经有一段时间了,但是如果您可以针对日期表进行外部联接,您不能选择 date_assignment_id 为空且 date > 今天的最小日期吗?显然,这需要访问一些日期表,我不确定是否有更惯用的 sql 方式来做到这一点。
标签: ruby-on-rails ruby postgresql