2012-12-04 8 views
5

मेरे पास ऐसा कोड है।अपने मॉड्यूल स्कोप के बाहर से किसी ऑब्जेक्ट का उपयोग करें

class User < ActiveRecord::Base 
end 

module Foo 
    class User 
    end 
end 

module Foo 
    class DoesSomethingWithActiveRecordUser 
    def initialize user_id 
     User.find(user_id) 
    end 
    end 
end 

अगर मैं Foo::DoesSomethingWithActiveRecordUser.new(1) फोन मुझे लगता है कि undefined method 'find' for Foo::User की तरह कुछ का कहना है कि एक त्रुटि संदेश मिलता है।

मैं ActiveRecord उपयोगकर्ता को Foo से कैसे कॉल करूं?

धन्यवाद।

उत्तर

17

इस तरह:

::User.find(user_id) 
+0

मैं जानता हूँ कि मुझे लगता है कि कोशिश की और यह काम नहीं किया। लेकिन अब ऐसा लगता है। क्या आप कुछ दस्तावेज को इंगित कर सकते हैं कि यह क्यों/क्या करता है? – mwoods79

+2

प्रीपेड करके :: आप शीर्ष नाम-स्थान तक पहुंच रहे हैं। अन्यथा, रूबी आपके वर्तमान मॉड्यूल में दिखाई देगी। –

+0

मुझे विशेष रूप से इस पर कोई दस्तावेज नहीं मिल रहा है, लेकिन यह @ ylan-s की ओर इशारा करते हुए बहुत आसान है। यह सिर्फ वर्ग/मॉड्यूल नेमस्पेस में रूट के संदर्भ को एंकर कर रहा है। –

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