【发布时间】:2022-12-10 12:33:09
【问题描述】:
我有一个 update_changeset,我想在其中防止写入 nil 值。
我尝试添加一个validate_change
def update_changeset(user, attrs) do
user
|> cast(attrs, [:full_name])
|> validate_change(:full_name, fn :full_name, full_name ->
if full_name == nil do
[full_name: "cannot be blank"]
else
[]
end
end)
end
但是因为它只在存在非 nil 值时被调用,它仍然允许我将 full_name: nil 写入数据库。
我怎样才能使这项工作?
更新:这是我如何在研究员的帮助下实施的:
defp prevent_empty(changeset, fields) do
Enum.reduce(fields, changeset, fn field, changeset ->
value = get_field(changeset, field)
if value in ["", nil] do
add_error(changeset, field, "cannot be empty or blank")
else
changeset
end
end)
end
【问题讨论】: