我有一个名为 next_week 的消息替换,它基本上需要 Date.today + 7.days。
不过,虽然我还是想在周末发邮件,但是如果 next_week 正好是周末,我希望它知道这一点并推送到周一。
我该怎么做呢?
我有一个名为 next_week 的消息替换,它基本上需要 Date.today + 7.days。
不过,虽然我还是想在周末发邮件,但是如果 next_week 正好是周末,我希望它知道这一点并推送到周一。
我该怎么做呢?
导轨 5:
date.on_weekend?
date.on_weekday?
导轨 4:
date.saturday? || date.sunday?
像这样:
sunday = 0
saturday = 6
weekend = [saturday, sunday]
mail_date += 1.days while weekend.include?(mail_date.wday)
你可以使用这个,
def weekday?
(1..5).include?(wday)
end
查看 ..
d = Date.today
=> Mon, 04 Oct 2010
d.weekday?
=> true
d = Date.today - 1
=> Sun, 03 Oct 2010
d.weekday?
=> false
一般使用business_time
gem(https://github.com/bokmann/business_time),可以完整解决这个问题。该库将允许您适应不同的工作周(例如周日至周四),甚至可以检查时间是否超出工作时间。
你的情况是
def next_week
0.business_days.after(7.days.from_now)
end
mail_date = Date.today + 7.days
if mail_date.wday == 0
mail_date += 1.day
elsif mail_date.wday == 6
mail_date += 2.days
end
# now send your email on mail_date
这有帮助吗?
您可以使用 Action Mailer 队列。您的邮件被添加到队列中,每当您调用ActionMailer Queue 的方法时,都会发送电子邮件。所以,基本上你可以在每个工作日调用该方法。在周末,您的电子邮件将被添加到队列中,但不会被发送。星期一当您调用该方法时,您的邮件将被发送。当然,您可以安排您的 Action mailer 方法调用,使用 rake 任务或 Rufus Scheduler 每周自动调用。