5

क्या किसी को भी रेल 3, Mongoid और Inherited Resources काम करने में सफलता मिली है? ऐसा करने के लिए कोई सुझाव? मुझे दोनों रत्नों का उपयोग करना अच्छा लगेगा। सूचकांक कार्यों परविरासत संसाधन और मोंगोइड

undefined method `scoped' 

:

वर्तमान में मैं में चल रहा हूँ।

धन्यवाद!


BTW scoped जारी करने के लिए एक समाधान तो जैसे संग्रह ओवरराइड करने के लिए है:

class CampaignsController < InheritedResources::Base 

    def collection 
    @campaigns ||= end_of_association_chain.paginate(:page => params[:page]) 
    end 

end 

लेकिन मैं एक और अधिक समग्र दृष्टिकोण रहा हूँ

उत्तर

10

आप केवल mongoid उपयोग कर रहे हैं यदि आप करना चाहिए विरासत संसाधनों में डिफ़ॉल्ट संग्रह व्यवहार को ओवरराइट करना है। डिफ़ॉल्ट व्यवहार यह है:

https://github.com/josevalim/inherited_resources/blob/master/lib/inherited_resources/base_helpers.rb#L22-24

जिसके अनुसार, निम्नलिखित चाल करना चाहिए:

module MongoidActions 
    def collection 
    get_collection_ivar || set_collection_ivar(end_of_association_chain.all) 
    end 
end 

InheritedResources::Base.send :include, MongoidActions 

तुम भी संग्रह डिफ़ॉल्ट पृष्ठ पर अंक लगाना और सभी पृष्ठों में मुक्त करने के लिए पृष्ठांकन के लिए कर सकते हैं।

+0

धन्यवाद जोस !! बहुत अच्छा काम करता है। मुझे विरासत संसाधन पसंद है, और मैं Mongoid कोशिश करने के लिए उत्सुक था - खुशी है कि उन्हें अच्छा खेलने के लिए आसान था। – Jonathan

+0

अद्यतन: इसे अब तक मास्टर में शामिल किया गया है, है ना? – bonhoffer

0

बहुत उपयोगी पोस्ट!

आप इस करना होगा कैसे जानें कि आपका नियंत्रक InheritedResource::Base से subclassed नहीं किया जा सकता बल्कि आप तो जैसे, वर्ग विधि inherit_resources उपयोग करने के लिए:

class MyController < AlreadyInheritedFromController 
    inherit_resources 
end 

ऊपर बंदर पैच इस सेटअप में काम करने के लिए प्रतीत नहीं होता ।

ऐसा लगता है कि कुंजी InheritedResources::Base.inherit_resources हो सकती है लेकिन मैं इस विधि को ओवरराइट करने के सही तरीके से अस्पष्ट हूं। अगर मैं यहां गलत रास्ते पर हूं तो कृपया सही करें।

4

वैकल्पिक रूप से आप Mongoid पैच कर सकते हैं:

module MongoidScoped 
    def scoped 
    all 
    end 
end 

Mongoid::Finders.send :include, MongoidScoped 

यह inherit_resources विधि काम अपेक्षा के अनुरूप कर देगा।

2

यहां मैंने InheritedResources::Base से विरासत दोनों को कवर करने और inherit_resources कथन का उपयोग करने के लिए किया है।

module InheritedResources 
    module BaseHelpers 
    def collection 
     get_collection_ivar || set_collection_ivar(end_of_association_chain.all) 
    end 
    end 
end 

आप आम तौर पर एक प्रारंभकर्ता (मैं config/initializers/mongoid.rb का उपयोग करें) में डाल।

Mongoid 2.0.0.beta.20 और inherited_resources 1.2.1 दोस्ताना बनाता है।

+0

'mongoid 2.0.0.rc7' भी। – Voldy

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