【发布时间】:2017-01-01 21:06:56
【问题描述】:
学习 Elixir/Ecto,并遇到了与变更集相关的障碍。不知道我做错了什么。
我有一个“域模型”结构,其中包含一些必填字段。当我执行put_change 时,返回的变更集仍然说变更集有错误(缺少字段),即使它就在更改中。
cset = Activity.changeset(%Activity{}, %{details: "Played in the snow", child_id: child_id})
#Ecto.Changeset<action: nil,
changes: %{child_id: "ed553c30-38d2-4cb1-9029-eb2180c141cc",
details: "Played in the snow"},
errors: [relevant_date: {"can't be blank", [validation: :required]},
display_time: {"can't be blank", [validation: :required]}],
data: #MyApp.Domain.Activity<>, valid?: false>
以上是意料之中的。 relevant_date 和 display_time 都丢失了,因此应该存在错误。
cset |> Ecto.Changeset.put_change(:relevant_date, ~D[2016-12-31])
#Ecto.Changeset<action: nil,
changes: %{child_id: "ed553c30-38d2-4cb1-9029-eb2180c141cc",
details: "Played in the snow", relevant_date: ~D[2016-12-31]},
errors: [relevant_date: {"can't be blank", [validation: :required]},
display_time: {"can't be blank", [validation: :required]}],
data: #Kidgenius.Domain.Activity<>, valid?: false>
这是对我没有任何意义的部分。 relevant_date 就在此处更改字段上,但它仍然告诉我 relevant_date can't be blank。
任何帮助将不胜感激!
编辑:这是 Ecto 2.1.1。
【问题讨论】: