在Mongoid中实现多对多关系时遇到问题

时间:2013-05-22 07:20:50

标签: ruby-on-rails ruby mongodb many-to-many mongoid

我正在构建一个Rails应用程序,并且在实现团队和用户多对多关系时遇到一些麻烦,这样一来,用户可以成为多个团队的一部分,团队显然可以拥有多个用户。这些是我现在的模特:

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的主人),Rails(4.0.0.rc1)和Ruby(2.0.0-p0)

1 个答案:

答案 0 :(得分:0)

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