我正在尝试向CRUD添加更多数据到我的管理界面。我的架构如下所示:
schema "tree" do
field :name, :string
field :metadata, :map
field :created_at, Ecto.DateTime
field :updated_at, Ecto.DateTime
end
我的表单目前看起来像这样:
form framework_tree do
inputs do
input tree, :name
end
inputs "Metadata" do
input tree, :metadata, schema: [icon: :string, index: :integer, title: :string]
end
end
元数据如下所示:
{
"metadata": {
"index": 1,
"info": {
"text": "Some random text"
},
"icon": "icon_1",
"data_points": [
{
"default": {
"name": "Default"
}
},
{
"other": {
"name": "Other"
}
}
]
}
}
到目前为止,我能够编辑顶级元数据字符串和整数。但我想要修改info.text
以及data_points
的数组。我可以将这些添加到表单中的schema
数组吗?或者是否有另一种方法可以轻松编辑此数据?
答案 0 :(得分:2)
这是Ecto.Schema.embedded_schema/1
的完美用例:
defmodule Tree do
use Ecto.Schema
schema "tree" do
field :name, :string
embeds_one :metadata, Metadata
field :created_at, Ecto.DateTime
field :updated_at, Ecto.DateTime
end
end
defmodule Metadata do
use Ecto.Schema
embedded_schema do
field :index
field :info
field :icon
embeds_many :datapoints, Datapoint
end
end
defmodule Datapoint do
...
end