J'ai une substitution de message appelée Next_week qui prend essentiellement la date.Today + 7.days. P>
Cependant, bien que je souhaite toujours envoyer des courriels le week-end, si le prochain_week tombe un week-end, je veux que cela connaisse cela et pousser au lundi. P>
Comment puis-je faire cela? P>
6 Réponses :
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 Is this helpful?
Je ne savais pas quelle est une caractéristique. Laisse-moi essayer.
Comme ceci:
sunday = 0 saturday = 6 weekend = [saturday, sunday] mail_date += 1.days while weekend.include?(mail_date.wday)
Vous pouvez utiliser la file d'attente d'action du mailer. Vos mails sont ajoutés à une file d'attente et chaque fois que vous appelez Méthode de la file d'attente ActionMailer, les e-mails seront envoyé. Donc, fondamentalement, vous pouvez appeler cette méthode tous les jours de la semaine. Le week-end, vos emails seront ajoutés à la file d'attente mais ne seront pas envoyés. Lundi, lorsque vous appelez l'appel à la méthode, vos mails seront envoyés. Bien sûr, vous pouvez planifier vos appels de méthode Action Mailer, à appeler automatiquement chaque jour à l'aide d'un planificateur de tâches Rake ou de Rufus. p>
Vous pouvez utiliser ceci, check .. p>
rails 5: rails 4: p>
Je les aime! On dirait le samedi? et tout jour de semaine i>? La méthode est implémentée dans Ruby 1.9+, peut-être plus tôt, sur les classes de temps et de date. Homme, qui aurait été utile de savoir il y a quelques années :) merci @marcin
Oh je suppose que cela est en soutien actif? Je n'utilise pas de rails.
Généralement, utilisez le Votre cas serait p> business_time code> gem ( https://github.com/bokmann / business_time ), qui résoudra cette question de manière complète. Cette bibliothèque vous permettra de vous adapter à différentes semaines de travail (dimanche au jeudi par exemple) et même vérifier si l'heure est hors du temps de travail.
def next_week
0.business_days.after(7.days.from_now)
end