2010-10-04 9 views

Respuesta

9

rieles 5:

date.on_weekend? 
date.on_weekday? 

Carriles 4:

date.saturday? || date.sunday? 
+0

Me gustan estos! se ve como el sabado? y cualquier * día de la semana *? El método se implementa en Ruby 1.9+, tal vez antes, en las clases de fecha y hora. Hombre, eso hubiera sido útil saber hace un par de años :) Gracias @marcin – alassiter

+0

Oh, supongo que esto está en soporte activo? No estoy usando rieles. – Angela

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 

¿Le puede ser útil?

+0

no sabía lo que es una característica. Déjame intentarlo. – Angela

13

De esta manera:

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

mail_date += 1.days while weekend.include?(mail_date.wday) 
+0

Hola, creo que lo entiendo, déjame intentarlo ... – Angela

+0

Tengo un resultado nulo ....? – Angela

+0

parece funcionar, ¡gracias! – Angela

0

Puede utilizar Acción Mailer cola. Sus correos electrónicos se agregan a una cola y cada vez que llame al método ActionMailer Queue's, se enviarán los correos electrónicos. Entonces, básicamente puedes llamar a ese método todos los días de la semana. Los fines de semana, sus correos electrónicos se agregarán a la cola, pero no se enviarán. El lunes cuando realices la llamada al método, se enviarán tus correos. Por supuesto, puede programar sus llamadas al método de correo de acción, para que se llamen automáticamente cada día de la semana utilizando una tarea de rake o el Programador de Rufus.

2

Puede utilizar este,

def weekday? 
    (1..5).include?(wday) 
end 

de verificación ..

d = Date.today 
=> Mon, 04 Oct 2010 
d.weekday? 
=> true 
d = Date.today - 1 
=> Sun, 03 Oct 2010 
d.weekday? 
=> false 
2

Generalmente, use la gema business_time (https://github.com/bokmann/business_time), que resolverá este problema de una manera completa. Esta biblioteca le permitirá adaptarse a diferentes semanas de trabajo (domingos a jueves, por ejemplo) e incluso comprobar si la hora está fuera de horas de trabajo.

Su caso sería

def next_week 
    0.business_days.after(7.days.from_now) 
end 
+0

Oh, esto es interesante si funciona. – Angela

Cuestiones relacionadas