Korzystanie Mongoid, powiedzmy, że mam następujących klas:Jak odwoływać się do osadzonego dokumentu w Mongoid?
class Map
include Mongoid::Document
embeds_many :locations
end
class Location
include Mongoid::Document
field :x_coord, :type => Integer
field :y_coord, :type => Integer
embedded_in :map, :inverse_of => :locations
end
class Player
include Mongoid::Document
references_one :location
end
Jak widać, staram się modelować prosty świat gry środowisko, w którym mapa osadza lokalizacje, a gracz odwołuje pojedynczą lokalizację jako ich obecne miejsce.
Stosując to podejście, ja otrzymuję następujący błąd, gdy próbuję odwołać „Location” atrybut klasy zawodnik:
Mongoid::Errors::DocumentNotFound: Document not found for class Location with id(s) xxxxxxxxxxxxxxxxxxx.
Rozumiem, że to dlatego, że jest osadzony dokument Lokalizacja making trudno jest odwoływać się poza zakresem jego dokumentu do osadzania (mapa). Ma to sens, ale jak mogę modelować bezpośrednie odniesienie do osadzonego dokumentu?
Uważam, że nie musisz przechowywać osobnego identyfikatora mapy: 'Maps.where ('location._id' => player.location_id)' - upewnij się tylko, że skonfigurowałeś odpowiednie indeksy (mapy indeksów według ' locations._id ') – colllin
Och - nadal musisz ręcznie znaleźć osadzony obiekt lokalizacji, ale przynajmniej nie jesteś już zależny od tej lokalizacji należącej do konkretnej mapy. Nie jestem pewien, czy to jest problem. – colllin