У нас есть страница, которая содержит много редактируемых пользователем данных, которые заполняются из различных таблиц в базе данных. Данные представлены в разных формах, раскрывающихся списках, флажках, полях ввода, текстовых областях и т. Д. *
Были некоторые конфликты, когда два пользователя загружали запись примерно в одно и то же время, один вносил изменения, а затем другой вносил ряд изменений. Когда они сохраняются, они не знают, что кто-то еще сделал изменение и, возможно, только что нарушил внесенное изменение или переписал его.
Я пытаюсь реализовать решение, чтобы смягчить эту проблему, например, высказать пользователю ошибку, когда данные были изменены кем-то другим.
Мне интересно, есть ли лучший способ проверить эту проблему? Некоторые идеи у меня были
- Предоставить как «текущие» данные, имеющиеся в поле, так и «оригинальные» данные. Затем проверьте, какие из них изменены, и сравните их в базе данных, чтобы увидеть, отличаются ли значения по умолчанию от того, что в настоящее время сохраняется. Это бы сработало, но, похоже, наименее благоприятно для производительности.
- Используйте jquery / javascript, чтобы определить, когда поле было отредактировано, и если оно изменилось с
defaultValue
, тогда установите скрытое поле, которое будет отправлено, чтобы указать его первоначальное значение. Тогда это будет похоже на предыдущую идею.
- Установить скрытое поле с отметкой времени, когда пользователь загрузил свою страницу. Когда они отправляют, используйте эту временную отметку и проверьте нашу таблицу истории, чтобы увидеть, были ли какие-либо данные на странице изменены с той отметки времени. Это, кажется, самая эффективная идея и, вероятно, самая простая для реализации.
Есть ли лучшие варианты или лучший способ сделать это? Я чувствую, что я заново изобретаю колесо для общей проблемы.