2016-11-15 12 views
0

Я создания базы данных в Ruby On Rails с использованием Mongoid, который включает в себя следующие три коллекции Residence, Карта, и маршрутизатор:Как добавить документы (ObjectId's) в has_many и has_and_belongs_to_many отношения с использованием Ruby on Rails с Mongoid?

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, belongs_to и has_and_belongs_to_many между документами, так что документ места жительства ссылается на _id маршрутизатора и _id карты, документ карты ссылается на _id маршрутизатора, а ссылки маршрутизатора _id карты.

Извините, если это не ясно, и спасибо за помощь!

Редактировать: Вот объяснение отношений: Многие Карты (отображающие разные данные) могут быть сгенерированы для каждого Резиденция. В каждом Резиденте есть Маршрутизатор, но может иметь более одного Маршрутизатора. Маршрутизатор (ы) включен в карту, но не должен быть встроен, поскольку он может существовать без карты.

ответ

0

Я предполагаю, что это должно быть

class Residence 
    has_many :routers 
    has_many :maps 
end 

class Map 
    has_many :routers 
end 

class Router 
    belongs_to :map 
end 

Если нет, то можете ли вы объяснить реальные отношения между этими объектами?

+0

Многие Карты (отображающие разные данные) могут быть сгенерированы для каждого Резиденция. В каждом Резиденте есть Маршрутизатор, но может иметь более одного Маршрутизатора. Маршрутизатор (ы) включен в карту, но не должен быть встроен, поскольку он может существовать без карты. –

+0

Я изменил ассоциации на основе вашего комментария. –

+0

Я понимаю, как определить отношения в моделях. Мой вопрос заключается в том, как вставлять документы, указывая, с какими документами он связан. –

 Смежные вопросы

  • Нет связанных вопросов^_^