首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4 MongoID嵌入式文档

Rails 4 MongoID嵌入式文档
EN

Stack Overflow用户
提问于 2014-01-27 07:31:36
回答 1查看 2.6K关注 0票数 3

我有下面的模型

代码语言:javascript
复制
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的以下结构

代码语言:javascript
复制
{
  "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"
    }
  ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 09:08:44

您必须定义模型正在嵌入office对象,反之亦然,请在这里解释:http://mongoid.org/en/mongoid/docs/relations.html。我猜你需要一个1-N关系,这样一个专业人员就可以嵌入几个办公室了?在这种情况下,像这样的东西应该能起作用。

职业模式

代码语言:javascript
复制
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

办公模式

代码语言:javascript
复制
class Office
  include Mongoid::Document
  field :name, type: String
  field :address, type: String

  embedded_in :professional, :inverse_of => :offices
end

请记住,如果要对这些对象使用一种表单,则必须执行嵌套表单,例如(或只需搜索某个内容):

代码语言:javascript
复制
<%= 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 %>

请注意,没有任何测试。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21375237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档