У меня есть приложение с множеством связей базы данных, которые зависят друг от друга для успешной работы приложения. Шарнир в приложении - это модель, называемая расписанием, но расписание будет тянуть блоки, сотрудника, JobTitle и назначение (в дополнение к этому каждый блок будет также извлекать назначение из базы данных) в составить график сотрудников в течение дня.
Когда я создавал приложение, я уделял большое внимание проверкам, которые гарантировали бы, что все части должны быть на месте, прежде чем все будет сохранено в базе данных. До сих пор это работало фантастически, и приложение работало и работало почти 6 месяцев, обслуживая около 150 000 запросов в месяц без сбоев и ошибок. До прошлой недели.
На прошлой неделе, когда кто-то изменял расписание, похоже, что ошибка базы данных, и расписание было сохранено в базе данных с отсутствующим назначением. Поскольку связь вызывается в каждом представлении, всякий раз, когда это расписание вызывалось из базы данных, приложение выдает ошибку NoMethod для вызова по nil.
При проектировании приложения, как я заявляю, вы защищаетесь от возможного сбоя со стороны базы данных / проверок? И если да, то как вы программно защищаетесь от этого? Проверяете ли вы все отношения, чтобы убедиться, что они не равны нулю, прежде чем отправлять их на просмотр?
Я знаю, что этот вопрос в общем наводнен, и если я могу быть более конкретным в том, что я имею в виду, пожалуйста, дайте мне знать в комментариях.