我在軌道公司模式下面的代碼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數組確實具有用戶id的列表,並且當我嘗試從此列表訪問用戶時,它可以正常工作。我該如何解決這個問題?
我使用的鐵軌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 –