【发布时间】:2012-06-19 07:54:34
【问题描述】:
我在 Rails 公司模型中有以下代码:
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
同样,以下代码不起作用:
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 列表,当我尝试从该列表访问用户时,它可以工作。我该如何解决这个问题?
我正在使用 rails 3.2.5 和 mongoid 3.0.0.rc
【问题讨论】:
-
我注意到,当通过
user.companies << company创建关联时,我得到了user.companies,但company.users的工作方式不同,返回了一个查询。我可以通过调用company.users.all.to_a来查看该数组。之后我打电话给company.users << user2,这似乎真的把协会弄乱了。 -
演出很晚。这个解决方法对我有用:stackoverflow.com/questions/7308539/…