0

我正在使用 Mongoid 在 Ruby on Rails 中构建一个数据库,其中包括以下三个集合 Residence、Map 和 Router:

居住地.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

地图.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

路由器.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关系,让居住文档引用router的_id和map的_id,map文档引用router的_id,router引用地图的_id。

抱歉,如果不清楚,感谢您的帮助!

编辑:这里是关系的解释:可以为每个住宅生成许多地图(显示不同的数据)。每个住宅都有一个路由器,但可能有多个路由器。路由器包含在地图中,但不应嵌入,因为它可以在没有地图的情况下存在。

4

1 回答 1

0

我想应该是

 class Residence
   has_many :routers
   has_many :maps
 end

 class Map
   has_many :routers
 end

 class Router
   belongs_to :map
 end

如果不是,您能否解释一下这些对象之间的真实关系?

于 2016-11-15T07:10:30.760 回答