0

次の3つのコレクションResidence、Map、およびRouterを含むMongoidを使用して、Ruby on Railsでデータベースを構築しています。

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

ルーター.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

私は現在、住居文書、地図文書、ルーター文書をそれぞれ 1 つずつ持っています。私の質問は、ドキュメント間に has_many、belongs_to、および has_and_belongs_to_many の関係を実装する方法です。これにより、住居ドキュメントはルーターの _id とマップの _id を参照し、マップ ドキュメントはルーターの _id を参照し、ルーターは参照します。マップの _id。

これが不明確である場合は申し訳ありませんが、助けてくれてありがとう!

編集:関係の説明は次のとおりです。多くのマップ(異なるデータを表示する)を各レジデンスに対して生成できます。各住居にはルーターがありますが、ルーターが複数ある場合もあります。Router(s) はマップに含まれていますが、マップなしで存在する可能性があるため、埋め込まれるべきではありません。

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 に答える