Временные метки равны нулю с ассоциациями many_to_many и Phoenix Web Rendering. - PullRequest
0 голосов
/ 23 сентября 2019

Я новичок в Эликсир и Феникс , и я врезался в стену.У меня проблемы с созданием с одной веб-страницы 3 записей в нашей базе данных.Вот что происходит:

У нас есть три таблицы:

События <-> Event_Actions <-> Действия

События и Действия связаны через many_to_many ассоциацию , называемую Event_Action . События на самом деле имеют 3 many_to_many ассоциаций с Actions через три разные таблицы с разными полями, но для примера я упростил его до одного.

При использовании веб-интерфейса Phoenix при отправке формы возникает ошибка.

Событие и Действие записи созданы правильно, но возникает исключение для ассоциации .По какой-то причине отметки времени не вставляются, даже если они присутствуют во всех схемах.

Если я просматриваю выходные данные запросов, я вижу, что действия или события INSERT INTO имеютполя timestamps, но не «event_actions».

Отсутствуют метки времени при вставке

Если я запускаю функцию вручную из iex или модульного тестирования, это работает, проблемапроисходит только тогда, когда он выполняется с веб-дисплея.

def create_action_on_start(event_id, action_id) do
payload = %Event_Start_Action{
  event_id: event_id,
  action_id: action_id
}
Repo.insert(payload)
end

Пока я здесь, у меня есть еще один вопрос к вам, так как это цель, которую я пытаюсь достичь с помощью этой системы.

Я пытаюсь создать динамическую форму с возможностью добавлять / удалять действия на лету и соответствующим образом обновлять форму.

Кроме того, схема таблиц немного сложнее, как указано выше. Действия имеют Targets (которые в основном представляют собой набор полей, которые действуют как фильтры) и также связаны через many_to_many ассоциацию .Так это выглядит примерно так:

События <-> Event_Actions <-> Действия <-> Action_Targets <-> Targets

Но я не могу ни отрисовать действия динамически , ни информацию о целях, связанных с действием.Есть ли у вас какие-либо советы по этому вопросу?Большое спасибо!

PS: У меня уже есть пост на reddit , но я не получил ответы, на которые надеялся.

...