2010-05-07 20 views
16

मैं दोनों रूबी और ActiveRecord करने के लिए नया हूँ। मैं वर्तमान में एक संशोधित करने के लिए और कोड के मौजूदा टुकड़ा चयन में एक तिथि सीमा को जोड़ने के लिए की जरूरत है। वर्तमान टुकड़ा इस प्रकार है:मैं कैसे के बीच एक तिथि सीमा खोज करते हैं, ActiveRecord मॉडल का उपयोग करना?

ReportsThirdparty.find(:all, :conditions => {:site_id=>site_id, :campaign_id=>campaign_id, :size_id=>size_id}) 

अब, मैं एक सीमा जोड़ने की जरूरत है, लेकिन मैं BETWEEN या >= या <= ऑपरेटरों कैसे करना है यकीन नहीं है। मुझे लगता है कि मैं क्या जरूरत के लिए कुछ इसी तरह है:

ReportsThirdparty.find(:all, :conditions => {:site_id=>site_id, :campaign_id=>campaign_id, :size_id=>size_id, :row_date=>"BETWEEN #{start_date} AND #{end_date}") 

यहां तक ​​कि अगर यह काम किया है, मुझे पता है कि यहाँ प्रक्षेप का उपयोग करके मुझे SQL इंजेक्शन हमले के अधीन छोड़ना होगा।

उत्तर

37

मेरा मानना ​​है कि आप ActiveRecord के खोजने के लिए एक रेंज वस्तु गुजरती हैं और आप क्या चाहते हैं प्राप्त कर सकते हैं:

ReportsThirdParty.find(:all, 
    :conditions => { 
    :site_id => site_id, 
    :campaign_id => campaign_id, 
    :size_id => size_id, 
    :row_date => start_date..end_date }) 

संपादित करें:

ReportsThirdParty.where( 
    :site_id => site_id, 
    :campaign_id => campaign_id, 
    :size_id => size_id, 
    :row_date => start_date..end_date) 
: यदि आप रेल 3 उपयोग कर रहे हैं आप के लिए कुछ इसी तरह का उपयोग करने की उम्मीद कर सकते

रेल 3 सक्रिय रिकॉर्ड प्रश्नों पर अधिक जानकारी के लिए देखें:
http://railscasts.com/episodes/202-active-record-queries-in-rails-3

+0

बिल्कुल सही! धन्यवाद! –