Elixir EXTO:基于现有行创建新行
我正在尝试复制带有更改的postgres行<代码>链接是现有行。我尝试过各种排列,但无法创建变更集-欢迎帮助 我正在使用这个版本的外星生物Elixir EXTO:基于现有行创建新行,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我正在尝试复制带有更改的postgres行链接是现有行。我尝试过各种排列,但无法创建变更集-欢迎帮助 我正在使用这个版本的外星生物 :phoenix_ecto, "~> 3.0-rc"` 这个密码呢 IO.inspect(link) changeset = link |> Map.from_struct # |> Map.delete(:id) |&
:phoenix_ecto, "~> 3.0-rc"`
这个密码呢
IO.inspect(link)
changeset =
link
|> Map.from_struct
# |> Map.delete(:id)
|> Upload.persist_changeset(params)
# new_link =
# Map.put link, :file_names, params["file_names"]
# case Repo.insert new_link do
case Repo.insert changeset do
{:ok, link} ->
render conn, "link.json", link: link.link
{:error, changeset} ->
...
end
及
检查
%Api.Upload{__meta__: #Ecto.Schema.Metadata<:loaded, "uploads">,
email: "hotbelgo@gmail.com", estimate_ids: [1],
file_names: ["f1.pdf", "f2.pdf"], id: 8,
inserted_at: #Ecto.DateTime<2016-08-04 10:01:21>,
job: #Ecto.Association.NotLoaded<association :job is not loaded>, job_id: 1,
link: "na2ClfJie4PsYC4y8Lr9",
template: #Ecto.Association.NotLoaded<association :template is not loaded>,
template_id: nil, updated_at: #Ecto.DateTime<2016-08-04 14:21:58>,
upload_type: "Artwork"}
我找到了一个解决方案,尽管我不确定这是不是最好的方法
update_params =
link
|> Map.from_struct
|> Map.put :file_names, params["file_names"]
changeset =
Upload.changeset(%Upload{}, update_params)
这是否有效:
changeset=Upload.persist\u changeset(%%{link | id:nil},params)
?现在我得到:请在强制转换或更改结构之前预加载关联。我理解此消息并不真的想预加载作业
,因为我只想保留作业id
您可以在问题中包含IO.inspect(link)
的输出吗?文件名
是您想要从参数
中获取的唯一字段吗?是的。基本上,记录包含一个唯一的、不可猜测的链接和一些其他ID。它支持与第三方共享的Web链接,使他们能够将文件上载到我的网站。我想允许重复使用链接,但要存储每次上载的文件名,因此需要复制现有数据,但要更改:文件名
defmodule MosaicApi.Upload do
use MosaicApi.Web, :model
schema "uploads" do
belongs_to :job, MosaicApi.Job
belongs_to :template, MosaicApi.Template
field :estimate_ids, {:array, :integer}
field :upload_type, :string
field :file_names, {:array, :string}
field :link, :string
field :email, :string
timestamps
end
update_params =
link
|> Map.from_struct
|> Map.put :file_names, params["file_names"]
changeset =
Upload.changeset(%Upload{}, update_params)