我正在构建一个 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:我正在运行 edge Mongoid(来自 git 的主人)、Rails(4.0.0.rc1)和 Ruby(2.0.0-p0)