为什么此代码因Ecto.NoPrimaryKeyValueError而失败

时间:2016-12-29 17:55:19

标签: elixir ecto

为什么会失败:

%Partner{} |> cast(%{id: 123}, [:id]) |> delete 

Ecto.NoPrimaryKeyValueError?我是明确设置主键吗?

1 个答案:

答案 0 :(得分:2)

对于变更集,id使用原始结构data的{​​{1}},而Repo.deletechanges使用castid中的新changes。您可以将changes合并到原始结构(data)中:

%Partner{} |> cast(%{id: 123}, [:id]) |> Ecto.Changeset.apply_changes |> delete 

或手动将id加入%Partner{}

%Partner{id: 123} |> delete