【发布时间】:2014-02-04 20:08:12
【问题描述】:
我很惊讶地发现在本地工作的范围在 heroku 上没有正确响应。 heroku 是否定义了一次而不是再次定义范围?有没有更好的方法来编写这些作用域?
# Offset date for early morning hours
if Time.now.hour < 4
scope :upcoming, lambda { between(Date.tomorrow, Date.tomorrow+4.days) }
scope :tomorrow, lambda { on(Date.today) }
scope :today, lambda { on(Date.yesterday).not_over }
else
scope :upcoming, lambda { between(Date.tomorrow+1.day, Date.tomorrow+5.days) }
scope :tomorrow, lambda { on(Date.tomorrow) }
scope :today, lambda { on(Date.today).not_over }
end
它会检查时间是否在凌晨 12 点到凌晨 4 点之间。如果是,则将:today、:tomorrow 和:upcoming 定义为从昨天开始。如果不是,则正常定义范围。
因此,当用户正在寻找“今天”的即将发生的事件并且它是周五晚上凌晨 1 点时,他/她会看到仍在进行的事件,直到凌晨 4 点。例如,一个尚未关闭的俱乐部。
无论现在是什么时间,Heroku 都通过 else 语句定义我的范围。
【问题讨论】:
标签: ruby-on-rails