Как добавить документы (ObjectId's) в отношения has_many и has_and_belongs_to_many, используя Ruby on Rails с Mongoid?
Я создаю базу данных в Ruby on Rails, используя Mongoid, которая включает в себя следующие три коллекции: Residence, Map и Router:
residence.rb
class Residence
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Geospatial
has_many :maps, inverse_of: :residence
has_many :routers, inverse_of: :residence
field :address, type: String
field :resident, type: String
end
map.rb
class Map
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Geospatial
belongs_to :residence, inverse_of: :maps
has_and_belongs_to_many :routers, inverse_of: :maps
embeds_many :pins
field :name, type: String
spatial_index "pins.loc"
end
router.rb
class Router
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Geospatial
belongs_to :residence, inverse_of: :routers
has_and_belongs_to_many :maps, inverse_of: :routers
field :loc, type: Point
field :MAC, type: String
field :name, type: String
field :serial, type: String
spatial_index :loc
end
В настоящее время у меня есть один документ места жительства, один документ карты и один документ маршрутизатора. Мой вопрос заключается в том, как реализовать отношения has_many, assign_to и has_and_belongs_to_many между документами, чтобы документ резидентности ссылался на _id маршрутизатора и _id карты, документ карты ссылается на _id маршрутизатора и ссылки на маршрутизатор _id карты.
Извините, если это неясно, и спасибо за любую помощь!
Изменить: Вот объяснение отношений: Многие карты (отображающие различные данные) могут быть созданы для каждого места жительства. В каждой резиденции есть маршрутизатор, но может быть несколько маршрутизаторов. Маршрутизатор (ы) включен в карту, но не должен быть встроен, так как он может существовать без карты.
1 ответ
Я думаю, это должно быть
class Residence
has_many :routers
has_many :maps
end
class Map
has_many :routers
end
class Router
belongs_to :map
end
Если нет, не могли бы вы объяснить реальные отношения между этими объектами?