В конечном итоге я хочу иметь проверочное ограничение для нескольких моих полей, чтобы, если какое-либо из них не было нулевым, то я хочу, чтобы ни одно из них не было нулевым.
У меня есть рабочее проверочное ограничение дляэто, но когда я применяю его к своему Ecto.Changeset
, используя check_constraint / 3 , я могу использовать его только на 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
сбоев.
Как получить одно и то же проверочное ограничение для нескольких полей, чтобы получить ошибки набора изменений для каждого поля, на котором ограничение не выполняется?