【发布时间】:2015-07-25 12:10:13
【问题描述】:
我已经习惯了使用 Mongoid,但是我在尝试使用 Mongoid 的情况下遇到了这个问题。
我有一场比赛,比赛有球队,球队有球员,比赛有同样的球员。
class Game
include Mongoid::Document
embeds_many :Players
embeds_many :Teams
end
class Team
include Mongoid::Document
embedded_in :Game
embeds_many :Players
end
class Player
include Mongoid::Document
embedded_in :Game
embedded_in :Team
end
现在当我使用
运行这段代码时game = Game.new( :id => "1" )
game.save
player = Player.new()
game.Players << player
team = Team.new()
game.Teams << team
team.Players << player
我希望有一个游戏,它有一个团队,那个团队有一个球员,而那个球员也在比赛中。
然后我运行
newgame = Game.find("1")
newteam = newgame.Teams.first
newplayer = newgame.Players.first
newplayer2 = newteam.Players.first
newplayer 存在,newplayer2 不存在。
那是怎么回事?
我是否只允许在一个对象中嵌入一个文档,有没有办法解决它?我尝试将其中一种关系设为belong_to,如果根据输出嵌入文档,则不允许这样做。
我知道我可以更改模型(游戏不需要指向玩家的链接)我只是想知道这种关系是否违反了某些规则,或者是否有一些技巧可以使这种工作如前所述。
作为一个附带问题,在这种情况下,有人可以回顾一下“保存”的规则(或假设玩家没有嵌入团队中)。设置完成后,我似乎不必保存游戏、团队和玩家来记录嵌入。如果我保存其中任何一个,则其他人会自动保存。或者在设置关系后修改它们时是否必须保存每个单独的文档(假设修改也是在关系设置后完成的)。
【问题讨论】:
标签: ruby mongodb mongoid relationship nosql