Каков правильный способ выполнения проверки на Struct с переданной ассоциацией явно?Ecto validate_required on belongs_to, когда Struct или nil прошел
def changeset(model, params \\ %{}) do
model
|> cast(params, [:name])
|> validate_required([:make, :name])
|> update_change(:name, &String.downcase/1)
|> unique_constraint(:name, name: :models_name_make_id_index)
end
Как я собираюсь использовать:
changeset(%Model{make: make}, %{....})
Где делают может быть равен нулю. И я хочу получить правильное сообщение об ошибке вместо:
** (UndefinedFunctionError) function nil.id/0 is undefined or private
Хорошо, это то, о чем я подумал и, наконец, закончил с функцией, которая соответствует шаблону, предоставленному партнеру :(Хотя было бы неплохо бы заблокировать его навсегда в одном месте. –
@ IvanYouroff вы могли бы предоставить эту функцию здесь? – Johannes
Он развил бит. Изначально это был просто сопоставление шаблонов в результате предыдущей операции. Поэтому, чтобы упростить жизнь, я создал крошечную библиотеку, реализующую монолитный тип Result и Option. Это звучит странно, но на самом деле это всего лишь кортеж с макросом ok (значение) преобразуется в {: ok, value} и error (e) в {: error, e}, который идеально подходит для большинства библиотек Erlang/Elixir. Вот библиотека: https://github.com/youroff/monex, вот Как я использовал его в этом случае: https://gist.github.com/youroff/8812191758e8df0d69f7d8c94b650b33 –