如何使用Ecto.Changeset.check_contstraint / 3在多个字段上检查相同约束?

时间:2019-10-18 19:00:51

标签: elixir ecto

我最终希望对我的一些字段设置检查约束,以确保如果其中任何一个都不为空,那么我希望它们都不为空。

对此我有一个有效的检查约束,但是当我使用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链中失败的最后一个错误。

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

0 个答案:

没有答案