我最终希望对我的一些字段设置检查约束,以确保如果其中任何一个都不为空,那么我希望它们都不为空。
对此我有一个有效的检查约束,但是当我使用check_constraint/3将其应用于我的Ecto.Changeset
时,一次只能在1个字段上使用它。
所以我认为我只是将它们通过管道连接在一起。如果约束在多个字段上出现错误,则会将错误添加到每个字段中。
赞:
%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_constraint
链中失败的最后一个错误。
如何在多个字段上获得相同的检查约束,以获取约束失败的每个字段上的变更集错误?