मैं रेल कंपनी मॉडल में निम्न कोड 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
मैंने देखा कि 'user.companies << company' द्वारा एसोसिएशन बनाते समय, मुझे' user.companies' अपेक्षित के रूप में मिला लेकिन 'company.users' ने अलग-अलग काम किया, एक प्रश्न लौटाया। मैं 'company.users.all.to_a' को कॉल करके उस सरणी को देख सकता था। उसके बाद मैंने 'company.users << user2' कहा, यह वास्तव में एसोसिएशन के साथ गड़बड़ लग रहा था। – Baruch
शो के लिए बहुत देर हो चुकी है। इस कामकाज ने मेरे लिए यह किया: http://stackoverflow.com/questions/7308539/mongoid-has-and-belongs-to-many-associations/36282420#36282420 –