gpt4 book ai didi

ruby-on-rails - Rails 4 MongoID 嵌入式文档

转载 作者:行者123 更新时间:2023-12-04 05:58:35 25 4
gpt4 key购买 nike

我有以下模型

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

我想包含一个嵌入式文档,我可以在其中存储多个办公地址。我正在寻找以下数据库结构

{
"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"
}
]
}

最佳答案

您必须定义该模型正在嵌入 office 对象,反之亦然,此处解释:http://mongoid.org/en/mongoid/docs/relations.html .我猜您需要一个 1-N 关系,以便 Professional 可以嵌入多个办公室?在那种情况下,类似这样的事情应该可行。

专业模特

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 %>

请注意,没有任何内容经过测试。

关于ruby-on-rails - Rails 4 MongoID 嵌入式文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com