Ruby on rails 需要MongoID和多对多关系方面的帮助吗

Ruby on rails 需要MongoID和多对多关系方面的帮助吗,ruby-on-rails,many-to-many,mongoid,Ruby On Rails,Many To Many,Mongoid,使用mongoid 2.0.0.beta.20,如果它意味着 这个目标很容易,但我无法实现。我有一个用户模型 references_many :worlds, :inverse_of => :users 还有一个世界,当然 references_many :users, :inverse_of => :worlds 换句话说,用户可以访问0..inf世界,而1..inf用户可以访问一个世界。World应该存储一个去过那里的用户ID列表,用户应该存储一个他访问过的世界ID列表。看起

使用mongoid 2.0.0.beta.20,如果它意味着

这个目标很容易,但我无法实现。我有一个
用户
模型

references_many :worlds, :inverse_of => :users
还有一个
世界
,当然

references_many :users, :inverse_of => :worlds
换句话说,用户可以访问0..inf世界,而1..inf用户可以访问一个世界。World应该存储一个去过那里的用户ID列表,用户应该存储一个他访问过的世界ID列表。看起来很简单,但不想为我工作

现在,有一个User实例(我们叫他
某人
)和两个World实例(
earth
mars
可能)。当我试图说有人访问了地球时,没有问题:

earth.users << someone
earth.users.count # => 1
一切都好吗?不确定:

earth.users.count # => 0
someone.worlds.count # => 0
我还尝试使用
:stored_as=>:array
参数来表示关系,但根本没有成功(方向无关紧要):


someone.worlds使用MongoID,我相信您可能需要显式地
earth。在使用类似
earth.users的内容修改文档后保存该文档。如果您升级到最新的rc,那么您可以使用新宏来处理这些关系:

references\u和\u referenced\u在许多世界中

在beta 20中,使用:stored_as=>:array是正确的。尝试这样设置默认值,它应该适合您


references\u many:worlds,:storaged\u as=>:array,:default=>[]

我在我的控制器中显式调用
save
(控制器只使用一个实例,所以没有其他方法)
earth.users.count # => 0
someone.worlds.count # => 0
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.<<