2012-05-18 11 views
8

इस त्रुटि के बारे में क्या है? मैं एक मानक क्वेरी चला रहा हूं जैसे:चेतावनी: समय # succ अप्रचलित है; समय का उपयोग करें + 1

time_range = (1.month.ago.beginning_of_month..1.month.ago.end_of_month) 


Feed.find(:all, :conditions => ['created_at = ? AND id not in (?)', time_range, [1,2,3]]).count 

कोई विचार? धन्यवाद

+0

रूबी और रेल के कौन से संस्करण? – echristopherson

उत्तर

20

मैं इस समस्या थी और समाधान इतना है कि यह दिनों में iterates "TO_DATE" जोड़ने के लिए था @echristopherson टिप्पणी की जांच करना होगा, इस तरह:

time_range = (1.month.ago.beginning_of_month.to_date..1.month.ago.end_of_month.to_date) 
+0

यह मेरी समस्या का समाधान किया। धन्यवाद Flaviu – sadaf

4

मुझे लगता है कि आपकी समस्या यह है कि आप created_at = ?, time_range कर रहे हैं, और time_range एक विशिष्ट मान नहीं है, और एक = एक विशिष्ट मान की अपेक्षा करता है। वास्तव में उस त्रुटि के लिए क्यों समझा नहीं सकता है, लेकिन आपको समाधान मिल सकता है।

इस बजाय क्या, मैं इसे करने की कोशिश की और काम करता है महान

1.9.3-p125 :014 > time_range = (1.month.ago.beginning_of_month..1.month.ago.end_of_month) 
=> Sun, 01 Apr 2012 00:00:00 UTC +00:00..Mon, 30 Apr 2012 23:59:59 UTC +00:00 
1.9.3-p125 :015 > Post.where(:created_at => time_range).where('id not in (?)', [1,2,3]).count 
    (0.3ms) SELECT COUNT(*) FROM "posts" WHERE ("posts"."created_at" BETWEEN '2012-04-01 00:00:00.000000' AND '2012-04-30 23:59:59.999999') AND (id not in (1,2,3)) 
=> 0 

अद्यतन

नहीं सीधे प्रश्न से संबंधित है, लेकिन आप अर्थ अर्थ के साथ कार्यक्षेत्र में उन परिस्थितियों जगह चाहिए ताकि आपके पास Feed.from_last_month और Feed.not_with_ids([1,2,3])

और आपकी क्यू के लिए कुछ होगा ry आप

Feed.from_month.not_with_ids([1,2,3]).count 

चेतावनी के बारे में विवरण के लिए नीचे दिए गए

+0

क्या यह संभव है कि रेल '' create_at => 'का उपयोग करते समय' रेंज 'को अनपैक करने के लिए पर्याप्त स्मार्ट है, लेकिन जब नहीं' बनाया_at' कच्चे एसक्यूएल का हिस्सा है? – echristopherson

+0

यह बात है, पहले मामले में आप रेल को अपना जादू करने देते हैं, दूसरी तरफ आप स्पष्ट रूप से कह रहे हैं कि क्वेरी में क्या स्थान रखना है;) रेल अपने स्वयं के अच्छे के लिए अपना जादू करें। –

+3

चेतावनी का मूल कारण यह है कि हर बार अगले आइटम तक पहुंचने के लिए 'रेंज के उपयोग' # succ' पर पुनरावृत्ति; और रुबी में शुरू 1.9.2 'समय # succ' अप्रचलित के रूप में चिह्नित किया गया था क्योंकि एक वास्तविक समय में वास्तव में कोई असफल उत्तराधिकारी नहीं है; प्री-1.9.2 कार्यान्वयन ने सेकंड को विभाजित करने के मनमाने ढंग से सम्मेलन का उपयोग किया। जब 'रेंज' को 'ऐरे' में अनपॅक करते समय यह खेल में आता है, जो रेल यहाँ करने की कोशिश करता है। – echristopherson

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