【发布时间】:2011-03-01 10:59:40
【问题描述】:
使用 mongoid 2.0.0.beta.20,如果这意味着。
目标很简单,但我做不到。我有一个User 模型,
references_many :worlds, :inverse_of => :users
还有一个World,当然,
references_many :users, :inverse_of => :worlds
用人类的话来说,用户可以访问 0..inf 的世界,而一个世界可以被 1..inf 的用户访问。 World 应该存储曾经去过那里的用户的 id 列表,而用户应该存储他访问过的世界的 id 列表。看起来很简单,但不想为我工作。
现在,有一个 User 实例(我们称他为 someone)和两个 World 实例(earth 和 mars 可能)。当我尝试说someone访问了earth时,没有问题:
earth.users << someone
earth.users.count # => 1
那我想说someone也上过mars:
mars.users << someone
mars.users.count # => 1
一切都好吗?不确定:
earth.users.count # => 0
someone.worlds.count # => 0
我也尝试使用:stored_as => :array参数进行关系,但完全没有成功(方向无关紧要):
someone.worlds << earth
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<<
(以及任何其他 Array 方法引发我试图处理 nil)
也许我错过了文档中的某些内容或做错了什么。请帮我解决这个问题。
【问题讨论】:
标签: ruby-on-rails many-to-many mongoid