Как вы используете Ecto.Changeset.check_contstraint / 3 для проверки того же ограничения на несколько полей? - PullRequest
0 голосов
/ 18 октября 2019

В конечном итоге я хочу иметь проверочное ограничение для нескольких моих полей, чтобы, если какое-либо из них не было нулевым, то я хочу, чтобы ни одно из них не было нулевым.

У меня есть рабочее проверочное ограничение дляэто, но когда я применяю его к своему 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 сбоев.

Как получить одно и то же проверочное ограничение для нескольких полей, чтобы получить ошибки набора изменений для каждого поля, на котором ограничение не выполняется?

...