Я пытаюсь объединить ошибки набора изменений.
У меня есть схема Учреждения, которая принадлежит пользовательской схеме.Некоторые поля являются обязательными для каждого, но ответ об ошибке выглядит следующим образом:
{
"errors": {
"user": {
"password_confirmation": [
"The password confirmation does not match the password."
],
"password": [
"This field is required."
],
"name": [
"This field is required."
]
},
"institution": {
"web_address": [
"is required."
]
},
}
}
Как мне объединить эти объекты ошибок в один?
Моя вставка выглядит так:
user_changeset =
User.normal_user_changeset(%User{}, %{
:email => Map.get(attrs, "email"),
:password => Map.get(attrs, "password"),
:password_confirmation => Map.get(attrs, "password_confirmation"),
:name => Map.get(attrs, "name"),
:postcode => Map.get(attrs, "postcode"),
:dob => Map.get(attrs, "dob")
})
institution =
%Institution{}
|> Institution.changeset(%{
:web_address => Map.get(attrs, "web_address"),
:person_responsible => Map.get(attrs, "person_responsible"),
:annual_turnover => Map.get(attrs, "annual_turnover")
})
|> Ecto.Changeset.put_assoc(:user, user_changeset)
|> Repo.insert()
Я хотел бы, чтобы ответ об ошибке был:
{
"errors": {
"password_confirmation": [
"The password confirmation does not match the password."
],
"password": [
"This field is required."
],
"name": [
"This field is required."
]
"web_address": [
"is required."
]
}
}
У меня есть эта функция в моем резервном контроллере (здесь по умолчанию):
def call(conn, {:error, %Ecto.Changeset{} = changeset}) do
conn
|> put_status(:unprocessable_entity)
|> render(SfiWeb.ChangesetView, "error.json", changeset: changeset)
end