Ecto - 验证关联模型的存在
Ecto - validate presence of associated model
如何验证 Ecto 中关联模型的存在?
schema "foo" do
has_many: bar, Bar
timestamps
end
@required_fields ~w(bar) # invalid
有办法吗?并验证这些字段的 min/max 数量 ?
还没有任何东西。但是您可以 运行 在 changeset
函数中自己进行这些验证:
def changeset(model, params) do
model
|> cast(...)
|> validate_bar_association()
end
def validate_bar_association(changeset) do
bar = changeset.model.bar
cond do
bar == nil ->
add_error changeset, :bar, "No bar"
length(bar) < 5 ->
changeset
true ->
add_error changeset, :bar, "waaaay too many"
end
end
我们确实想让嵌套关联变得更好,但在我们的优先级列表中还有其他项目更靠前。 :)
如何验证 Ecto 中关联模型的存在?
schema "foo" do
has_many: bar, Bar
timestamps
end
@required_fields ~w(bar) # invalid
有办法吗?并验证这些字段的 min/max 数量 ?
还没有任何东西。但是您可以 运行 在 changeset
函数中自己进行这些验证:
def changeset(model, params) do
model
|> cast(...)
|> validate_bar_association()
end
def validate_bar_association(changeset) do
bar = changeset.model.bar
cond do
bar == nil ->
add_error changeset, :bar, "No bar"
length(bar) < 5 ->
changeset
true ->
add_error changeset, :bar, "waaaay too many"
end
end
我们确实想让嵌套关联变得更好,但在我们的优先级列表中还有其他项目更靠前。 :)