如何使has_and_belongs_to_many关系在mongoid中工作

时间:2012-06-19 07:54:34

标签: ruby-on-rails-3 mongoid

我在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

1 个答案:

答案 0 :(得分:2)

我有完全相同的问题;) 确保您使用的是mongodb版本> 2.0.0,有关详细信息,请参阅:http://mongoid.org/en/mongoid/docs/installation.html#installation