我有一个带有方法调用的模型due?
。
def due?
case self[:occurring]
when 'yearly'
last_update = self[:date]
due = self[:action]
today = Date.today
this_year = today.year
next_year = this_year + 1
return (
last_update >= (Date.new(this_year, due.month, due.day)) &&
last_update < Date.new(next_year, due.month, due.day) &&
!self.open?
)
when 'monthly'
#... TODO
else
return self[:date] <= DateTime.now
end
end
这没什么太糟糕的。问题是我需要使用上述算法/搜索找到所有到期的记录。我打算使用范围,但我认为它有点太多了。我该如何进行?