Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何使用exto.Changeset.check\u contstraint/3检查多个字段上的相同约束?_Elixir_Ecto - Fatal编程技术网

Elixir 如何使用exto.Changeset.check\u contstraint/3检查多个字段上的相同约束?

Elixir 如何使用exto.Changeset.check\u contstraint/3检查多个字段上的相同约束?,elixir,ecto,Elixir,Ecto,我最终希望在我的几个字段上有一个检查约束,如果其中任何一个字段不为null,那么我不希望其中任何一个字段为null 我对此有一个工作检查约束,但当我将它应用到我的exto.Changeset使用时,一次只能在一个字段上使用它 所以我想我会把它们用管道连接起来。如果约束在多个字段上出错,它会将错误添加到每个字段 像这样: %Ecto.Changeset{ valid?: false, errors: [*error_for_field_one*, *error_for_field_

我最终希望在我的几个字段上有一个检查约束,如果其中任何一个字段不为null,那么我不希望其中任何一个字段为null

我对此有一个工作检查约束,但当我将它应用到我的
exto.Changeset
使用时,一次只能在一个字段上使用它

所以我想我会把它们用管道连接起来。如果约束在多个字段上出错,它会将错误添加到每个字段

像这样:

%Ecto.Changeset{
    valid?: false,
    errors: [*error_for_field_one*, *error_for_field_two*, *error_for_field_three*]
} = 
    changeset
    |> check_constraint(:field_one, :my_constraint, message: "this doesn't work") 
    |> check_constraint(:field_two, :my_constraint, message: "this doesn't work") 
    |> check_constraint(:field_three, :my_constraint, message: "this doesn't work") 
    |> etc.
不幸的是,这并没有发生,我只得到了失败的
check\u constraint
s链中的最后一个错误


如何在多个字段上获得相同的检查约束,以在约束失败的每个字段上获得更改集错误?

您使用的是不存在的
检查约束/4
。只有,或者我遗漏了什么?我想你是完全正确的,我一直在错误地使用这个函数。谢谢你指出这一点。我简直不敢相信我竟然没有领会到
changeset>check\u约束(:field\u one,name::my\u constraint\u one);>check\u约束(:field\u two,name::my\u constraint\u two);>check\u约束(:field\u three,name::my\u constraint\u three)
我也遇到了同样的问题,你有解决方案可以把所有的错误集中起来吗?