私は、次の3つのコレクションレジデンス、地図、およびルータが含まMongoidを使ってRuby on Railsにデータベースを構築しています:MongoidでRuby on Railsを使用してhas_manyとhas_and_belongs_to_manyの関係にドキュメント(ObjectId)を追加する方法は?
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
私は現在1つ持っています1つのマップ文書、および1つのルータ文書を含む。私の質問は、居住文書がルータの_idとマップの_idを参照するように、文書の間にhas_many、belongs_to、has_and_belongs_to_manyの関係を実装する方法です。マップ文書はルータの_idを参照し、ルータ参照マップの_id。
ご迷惑をおかけして申し訳ありませんが、ご協力いただきありがとうございます。
編集:以下の関係の説明です。 各レジデンスごとに、多数のマップ(異なるデータを表示)を生成できます。各レジデンスにはルータがありますが、複数のルータがある場合があります。ルーターはマップに含まれていますが、マップなしで存在する可能性があるため、組み込むべきではありません。
各レジデンスごとに(異なるデータを表示する)多くのマップを生成できます。各レジデンスにはルータがありますが、複数のルータがある場合があります。ルーターはマップに含まれていますが、マップなしで存在する可能性があるため、組み込むべきではありません。 –
あなたのコメントに基づいて関連付けを変更しました。 –
私はモデルの関係を定義する方法を理解しています。私の質問は、関連するドキュメントを指定してドキュメントを挿入する方法です。 –