2010-10-04 17 views
8

मेरे पास एक संदेश प्रतिस्थापन है जिसे next_week कहा जाता है जो मूल रूप से दिनांक.today + 7.days लेता है।मैं कैसे सुनिश्चित कर सकता हूं कि एक दिन रेल में एक सप्ताह का दिन है?

हालांकि, हालांकि मैं अभी भी सप्ताहांत पर ईमेल भेजना चाहता हूं, अगर अगली_week सप्ताहांत पर पड़ती है, तो मैं इसे जानना चाहता हूं और सोमवार को धक्का देना चाहता हूं।

मैं यह कैसे कर सकता हूं?

उत्तर

9

रेल 5:

date.on_weekend? 
date.on_weekday? 

रेल 4:

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

मुझे ये पसंद है! यह शनिवार की तरह दिखता है? और किसी भी * सप्ताहांत *? विधि समय और दिनांक कक्षाओं पर रूबी 1.9+ में हो सकती है, शायद पहले। मैन, जो कुछ साल पहले जानना उपयोगी होगा :) धन्यवाद @marcin – alassiter

+0

ओह मुझे लगता है कि यह सक्रिय समर्थन में है? मैं रेल का उपयोग नहीं कर रहा हूँ। – 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 

क्या यह सहायक है?

+0

मैं एक विशेषता है क्या नहीं पता था। मुझे कोशिश करने दो। – Angela

13
इस तरह

:

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

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

हाय, मुझे लगता है कि मुझे यह मिल गया है, मुझे इसे आज़माएं .... – Angela

+0

मुझे एक नील परिणाम मिलता है ....? – Angela

+0

काम करने लगता है, धन्यवाद! – Angela

0

आप कार्रवाई मेलर कतार उपयोग कर सकते हैं। आपके मेल कतार में जोड़े जाते हैं और जब भी आप ActionMailer Queue's विधि को कॉल करते हैं, तो ईमेल भेजे जाएंगे। तो, मूल रूप से आप हर सप्ताह उस विधि को कॉल कर सकते हैं। सप्ताहांत पर, आपके ईमेल कतार में जोड़े जाएंगे लेकिन उन्हें नहीं भेजा जाएगा। सोमवार को जब आप विधि को कॉल करते हैं, तो आपके मेल भेजे जाएंगे। बेशक आप अपने एक्शन मेलर विधि कॉल को शेड्यूल या रूफस शेड्यूलर का उपयोग करके हर हफ्ते के दिन स्वचालित रूप से कॉल करने के लिए शेड्यूल कर सकते हैं।

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 
2

आम तौर पर, business_time मणि (https://github.com/bokmann/business_time) का उपयोग करें, जो इस समस्या को पूरी तरह से हल करेगा। यह लाइब्रेरी आपको विभिन्न कार्य सप्ताहों (उदाहरण के लिए रविवार को गुरुवार तक) के लिए अनुकूलित करने की अनुमति देगी और यह भी जांच करेगी कि घंटा कामकाजी घंटों से बाहर है या नहीं।

आपका मामला होगा

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

ओह यह दिलचस्प है अगर यह काम करता है। – Angela

संबंधित मुद्दे