2012-06-19 11 views
5

मैं रेल कंपनी मॉडल में निम्न कोड has_and_belongs_to_many संबंध काम करने के लिए कैसे:में mongoid

class Company 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :name,  type: String 
    ... 
    has_and_belongs_to_many :users 
end 

उपयोगकर्ता मॉडल:

class User 
    include Mongoid::Document 
    include Mongoid::Timestamps 
    include ActiveModel::SecurePassword 

    field :email,   type: String 
    ... 
    has_and_belongs_to_many :companies 
end 

डेटाबेस में एक कंपनी के रिकॉर्ड नहीं है, और एक उपयोगकर्ता रिकॉर्ड और वे जुड़े हुए हैं। किसी कारण के लिए, निम्न कोड काम नहीं करता है:

c = Company.first 
c.users # returns empty array 

इसी तरह, followign कोड काम नहीं करता:

u = User.first 
u.companies 

लेकिन निम्नलिखित कोड करता है काम:

c = Company.first 
user = User.find c.user_ids.first 

और निम्नलिखित कोड भी काम करता है:

u = User.first 
company = Company.find u.company_ids.first 

इसलिए यदि मैं company.users से उपयोगकर्ताओं तक पहुंचने का प्रयास करता हूं, तो यह काम नहीं करता है, लेकिन user_ids सरणी में उपयोगकर्ता आईडी की एक सूची होती है, और जब मैं इस सूची से उपयोगकर्ताओं तक पहुंचने का प्रयास करता हूं, तो यह काम करता है। मैं इस समस्या को कैसे हल कर सकता हूं?

मैं रेल 3.2.5 का उपयोग कर रहा है और mongoid 3.0.0.rc

+0

मैंने देखा कि 'user.companies << company' द्वारा एसोसिएशन बनाते समय, मुझे' user.companies' अपेक्षित के रूप में मिला लेकिन 'company.users' ने अलग-अलग काम किया, एक प्रश्न लौटाया। मैं 'company.users.all.to_a' को कॉल करके उस सरणी को देख सकता था। उसके बाद मैंने 'company.users << user2' कहा, यह वास्तव में एसोसिएशन के साथ गड़बड़ लग रहा था। – Baruch

+0

शो के लिए बहुत देर हो चुकी है। इस कामकाज ने मेरे लिए यह किया: http://stackoverflow.com/questions/7308539/mongoid-has-and-belongs-to-many-associations/36282420#36282420 –

उत्तर

2

मैं बिल्कुल वैसा ही मुद्दा था;) सुनिश्चित करें कि आप MongoDB संस्करण> 2.0.0 का उपयोग कर रहे अधिक जानकारी के लिए सुनिश्चित देखें: http://mongoid.org/en/mongoid/docs/installation.html#installation

+0

हां, मैंने बस एक सूडो apt-get स्थापित किया mongodb- Mongodb को पुनर्स्थापित करने के लिए 10gen, (मुझे लगता है कि मैंने इसे पहले 6 महीने पहले स्रोत से नहीं छोड़ा था) और इसके बाद काम करना शुरू कर दिया। – umar

+0

यह मेरे लिए काम नहीं करता है –