Omdat kaarten hun eigen verzameling zijn, moet u elke kaartverzameling herhalen om te zoeken naar de locatie waarnaar uw speler verwijst.
U hebt niet rechtstreeks toegang tot ingesloten documenten. Je moet door de collectie gaan en naar beneden werken.
Om te voorkomen dat alle kaarten worden herhaald, kunt u zowel de locatiereferentie ALS de kaartreferentie in uw Player-document opslaan. Hiermee kunt u criteria koppelen die uw kaart selecteren en vervolgens de locatie erin. Je moet een methode coderen in je Player-klasse om dit te verwerken.
def location
self.map.locations.find(self.location_id)
end
Dus vergelijkbaar met hoe je jezelf antwoordde, behalve dat je de location_id nog steeds in je spelerdocument kon opslaan in plaats van de coördinaatattributen te gebruiken.
Een andere manier is om kaarten, locaties en spelers in hun eigen verzamelingen te plaatsen in plaats van de locatie in uw kaartenverzameling op te nemen. Dan zou je referentierelaties kunnen gebruiken zonder iets speciaals te doen... maar je gebruikt eigenlijk gewoon een hiërarchische database alsof het een relationele database is op dit punt...