我有下面的模型
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"
}
]
}发布于 2014-01-27 09:08:44
您必须定义模型正在嵌入office对象,反之亦然,请在这里解释: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 %>请注意,没有任何测试。
https://stackoverflow.com/questions/21375237
复制相似问题