2011-09-07 5 views
14

अनिवार्य रूप से मैं स्कॉप्स की श्रृंखला पर लागू होने के लिए एक नो-ऑप प्रकार के संबंध की तलाश में हूं।मैं एक ActiveRecord स्कोप कैसे बना सकता हूं जो एरल (संभवतः) का उपयोग कर रेल 3 में क्वेरी को प्रभावित नहीं करता है?

चलें कहते हैं कि मैं स्कोप की एक श्रृंखला है:

Post.approved.published.all 

अब, डीबगिंग उद्देश्यों के लिए, मैं कुछ भी नहीं सब पर, की परवाह किए बिना कर ताकि श्रृंखला केवल approved पदों वापस आ जाएगी, published गुंजाइश करना चाहते हैं चाहे वे published हों या नहीं।

क्या मैं निम्न विधि में वापसी होगी:

def self.published 
    # what to return? 
end 

उत्तर

18

all के लिए published अन्य नाम बनाएं, या scoped का उपयोग एक रिश्ता अतिरिक्त शर्तें chainged जा सकता है पर लौटने के लिए:

def self.published 
    all 
    #or 
    scoped 
end 

मैं एक स्कोप का उपयोग करेगा, all लौटा रहा है ...

scope :published, all 

या, यह एक उर्फ ​​scoped के लिए करते हैं:

scope :published, scoped 
+0

मैं निश्चित रूप से सभी के लिए देख रहा था, इसकी तो स्पष्ट अब मुझे यकीन है कि क्यों मुझे लगता है कि नहीं सोचा था नहीं हूँ। – jakeonrails

+2

यह वास्तव में पुराना है, लेकिन यदि आप किसी सरणी के बजाय संबंध चाहते हैं, तो अनाम गुंजाइश (रेल 3) वापस करने के लिए 'scoped' का उपयोग करें। –

+0

@ kardeiz हां, यह निश्चित रूप से बेहतर तरीका है, जब मैंने यह उत्तर लिखा था, तो मुझे इससे अनजान था। – meagar

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

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