2015-10-25 3 views
0

У меня есть простой канал Phoenix для обработки веб-адресов для сообщений. Я попробовал, добавив вставку модели в базу данных, и я получаю эту ошибку, когда я прохожу эти сообщения Params в.Ошибка Phoenix - (ErlangError) erlang:: «модуль не может быть загружен»

def handle_in("new:msg", msg, socket) do 
    message_params = %{"body" => msg["body"]} 
    changeset = Message.changeset(%Message{}, message_params) 

    case Repo.insert(changeset) do 
    {:ok, room} -> 
     broadcast! socket, "new:msg", %{user: msg["user"], body: msg["body"]} 
     {:reply, {:ok, %{msg: msg["body"]}}, assign(socket, :user, msg["user"])} 
    {:error, changeset} -> 
    end 
end 

Вот ошибка. Любые идеи о том, что это может быть, более чем приветствуются.

Repo.insert(%Ecto.Changeset{action: nil, changes: %{body: "feaflje"}, constraints: [], errors: [], filters: %{}, model: %PulseApi.Message{__meta__: #Ecto.Schema.Metadata<:built>, body: nil, id: nil, inserted_at: nil, room: #Ecto.Association.NotLoaded<association :room is not loaded>, room_id: nil, updated_at: nil}, optional: [], opts: [], params: %{"body" => "feaflje"}, repo: nil, required: [:body], types: %{body: :string, id: :id, inserted_at: Ecto.DateTime, room_id: :id, updated_at: Ecto.DateTime}, valid?: true, validations: []}) 

ответ

0

Мне нужно было добавить название проекта для правильного пространства имен Repo, чтобы заставить это работать.

Репо должен быть ProjectName.Repo

case PulseApi.Repo.insert(changeset) do 
    {:ok, room} -> 
    broadcast! socket, "new:msg", %{user: msg["user"], body: msg["body"]} 
    {:reply, {:ok, %{msg: msg["body"]}}, assign(socket, :user, msg["user"])} 
    {:error, changeset} -> 
end 
Смежные вопросы