8

next_weekというメッセージ置換があり、基本的にDate.today+7.daysかかります。

ただし、週末にメールを送信したいのですが、next_weekが週末に当たる場合は、これを認識して月曜日にプッシュしてください。

どうすればこれを行うことができますか?

4

6 に答える 6

17

レール 5:

date.on_weekend?
date.on_weekday?

レール 4:

date.saturday? || date.sunday?
于 2016-06-21T19:19:06.587 に答える
13

このような:

sunday = 0
saturday = 6
weekend = [saturday, sunday]

mail_date += 1.days while weekend.include?(mail_date.wday)
于 2010-10-04T04:45:23.247 に答える
2

あなたはこれを使用することができます、

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  
于 2010-10-04T06:06:29.417 に答える
1
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

これは役に立ちましたか?

于 2010-10-04T04:43:00.833 に答える
0

Action Mailer Queue を使用できます。メールがキューに追加され、 ActionMailer Queue のメソッドを呼び出すたびに、メールが送信されます。したがって、基本的に平日は毎日そのメソッドを呼び出すことができます。週末には、メールはキューに追加されますが、送信されません。月曜日にメソッドを呼び出すと、メールが送信されます。もちろん、rake タスクまたは Rufus Scheduler を使用して、Action mailer メソッドの呼び出しをスケジュールし、毎週自動的に呼び出されるようにすることもできます。

于 2010-10-04T05:37:56.007 に答える