Почему phoenix_ecto не может скомпилировать :model в наборе изменений?

Когда я пытаюсь запустить mix deps.get или mix deps.compile, я получаю эту ошибку:

== Compilation error on file lib/phoenix_ecto/html.ex ==
** (CompileError) lib/phoenix_ecto/html.ex:3: unknown key :model for struct Ecto.Changeset
    (stdlib) lists.erl:1354: :lists.mapfoldl/3

Почему это происходит и как я могу это исправить?


person Evan Conrad    schedule 14.08.2016    source источник


Ответы (1)


Как это исправить:

Вам нужно обновить свои зависимости следующим образом:

{:ecto, "~> 2.0.4"},
{:phoenix_ecto, "~> 3.0.1"},
{:phoenix_html, "~> 2.6.2"},

Затем запустите mix clean --all, а затем mix deps.get.

Почему это происходит:

Эта ошибка возникает из-за того, что ваша зависимость phoenix_ecto находится позади вашей зависимости ecto. В ecto v2.0.0 changeset.model стало changeset.data.

Код для phoenix_ecto по-прежнему использует model в третьей строке:

def to_form(%Ecto.Changeset{model: model, params: params} = changeset, opts) do

В этой фиксации phoenix_ecto был обновлен для поддержки новой версии ecto.

person Evan Conrad    schedule 14.08.2016
comment
Я застрял на этом в течение нескольких часов. Спасибо FlaqueDeau! - person SethS; 14.10.2016