【问题标题】:how to make has_and_belongs_to_many relationship work in mongoid如何使 has_and_belongs_to_many 关系在 mongoid 中工作
【发布时间】: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/…

标签: ruby-on-rails-3 mongoid


【解决方案1】:

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

【讨论】:

  • 是的,我只是做了一个 sudo apt-get install mongodb-10gen 来重新安装 mongodb,(我想我早在大约 6 个月前就从源头安装了它),然后它就开始工作了。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多