2013-05-22 57 views
0

我正在构建Rails应用程序,并且在实现团队和用户多对多关系时遇到了一些麻烦,用户可以通过这种方式部分多个团队和一个团队显然可以有多个用户。这些是我目前的车型:在Mongoid中实现多对多关系时遇到问题

class User 
    include Mongoid::Document 
    has_and_belongs_to_many :teams, :class_name => 'Team', :inverse_of => :member 
end 

class Team 
    include Mongoid::Document 
    has_and_belongs_to_many :members, :class_name => 'User', :inverse_of => :teams 
end 

我的问题是,当我测试这个Rails的控制台上,它只是不有道理:

2.0.0-p0 :002 > u = User.first 
=> #<User _id: 519c692e38508ce07e000001, team_ids: ["519c6f1338508c9431000001"]> 
2.0.0-p0 :005 > t = u.teams.new 
=> #<Team _id: 519c6fcd38508c08e0000001, member_ids: ["519c692e38508ce07e000001"]> 
2.0.0-p0 :006 > u.teams 
=> [#<Team _id: 519c6fcd38508c08e0000001, member_ids: ["519c692e38508ce07e000001"]>] 
2.0.0-p0 :008 > t.members 
=> [] 

为什么没有团队成员关系向我显示用户,但数组有它的ID?它应该包含用户对象,因为我使用了u.teams.new。我尝试了不同的东西,但都产生了类似的结果(例如用户没有列出任何团队,但在阵列上有ID)。我怎样才能解决这个问题?谢谢!

PD:我运行边缘Mongoid(从Git的主站),导轨(4.0.0.rc1)和Ruby(2.0.0-P0)

+0

不应该是:inverse_of =>:用户模型中的成员而不是成员? – 2013-05-22 07:55:47

+0

哎呀没有注意到。虽然它仍然是同样的问题,但它没有改变任何东西 – pmerino

回答

0

这不是Mongoid故障实际。这是因为我的开发虚拟机安装了MongoDB 1.4(不要问为什么,我不知道)。升级到最新版本,现在它是完美的!