Elixir 如何使用exto.Changeset.check\u contstraint/3检查多个字段上的相同约束?
我最终希望在我的几个字段上有一个检查约束,如果其中任何一个字段不为null,那么我不希望其中任何一个字段为null 我对此有一个工作检查约束,但当我将它应用到我的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_
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)
我也遇到了同样的问题,你有解决方案可以把所有的错误集中起来吗?