Мне нужно проверить данные из нескольких таблиц ... как мне это сделать? - PullRequest
0 голосов
/ 07 августа 2010

Как мне проверить данные, попадающие в несколько таблиц, которые все зависят друг от друга?

У меня есть сайт дебатов, где пользователи могут начать дебаты и со своими дебатами представить «варианты опроса», чтобы люди могли выбрать вариант, отвечая на дебаты.

Процесс проверки происходит следующим образом: модель дебатов подтверждает, что столбцы, специфичные для таблицы дебатов, действительны (тема и текст). Модель опций подтверждает, что опции, предоставленные в обсуждении, действительны (текст). Модель категорий подтверждает, что категория, предоставленная пользователем для этого обсуждения, действительно существует.

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

Проблема возникает при одновременном создании новой дискуссии с опциями опроса. Делая так, чтобы дебаты существовали до добавления новой опции, я в конечном итоге в ловушке-22. Дебаты не будут добавлены (и, следовательно, не будут существовать), если все не будет проверено, а параметры опроса не будут подтверждены, если дебаты не существуют, потому что для привязки необходим идентификатор дебата.

Должен ли я удалить эту логику из опций моего опроса? Что мне делать?

1 Ответ

0 голосов
/ 20 ноября 2012

Не разрешайте пользователям создавать тему обсуждения и параметры опроса с одинаковой отправкой формы.

Вы можете поддерживать хороший UX, используя AJAX, чтобы пользователи сначала создавали тему обсуждения , а затем позволяли создавать опции опроса на той же странице. Форма опроса может быть либо серой, либо невидимой до тех пор, пока не будет создана тема для обсуждения.

Альтернатива записи обходного пути в вашей логике проверки усложнит тестирование и поддержку вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...