簡體   English   中英

Rails 4 MongoID嵌入式文檔

[英]Rails 4 MongoID embedded Documents

我有以下型號

class Professional
  include Mongoid::Document
  field :first_name, type: String
  field :last_name, type: String
  field :company_name, type: String
  field :address, type: String


  validates :first_name, length: { minimum: 5, :message => "What" }, format: { with: /\A[a-zA-Z]+\z/, message: "only allows letters" }
end

我想要包含一個嵌入式文檔,我可以存儲多個辦公地址。 我正在尋找以下DB的結構

{
  "first_name": "Harsha",
  "last_name": "MV",
  "company_name": "Mink7",
  "offices": [
    {
      "name": "Head Office",
      "address": "some address here"
    },
    {
      "name": "Off Site Office",
      "address": "some large address here"
    }
  ]
}

您必須定義模型嵌入辦公室對象,反之亦然,解釋如下: http//mongoid.org/en/mongoid/docs/relations.html 我猜你需要一個1-N關系,以便專業人士可以嵌入幾個辦公室? 在這種情況下,這樣的事情應該有效。

專業模特

class Professional
  include Mongoid::Document
  field :first_name, type: String
  field :last_name, type: String
  field :company_name, type: String
  field :address, type: String


  validates :first_name, length: { minimum: 5, :message => "What" }, format: { with: /\A[a-zA-Z]+\z/, message: "only allows letters" }

  embeds_many :offices, class_name: "Office"
end

辦公室模型

class Office
  include Mongoid::Document
  field :name, type: String
  field :address, type: String

  embedded_in :professional, :inverse_of => :offices
end

請記住,如果您打算為這些對象使用一個表單,則必須執行嵌套表單,例如(或只是谷歌一些):

<%= form_for @professional, :url => { :action => "create" } do |o| %>
    <%= o.text_field :first_name %>
    <%= o.text_field :last_name %>

    <%= o.fields_for :office do |builder| %>
        <%= builder.text_field :name %>
        <%= builder.text_field :address %>
    <% end %>
<% end %>

請注意,沒有測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM