Когда ИТИ имеет смысл? Мы храним одну и ту же информацию для каждого типа, но используем ее по -разному
-
26-10-2019 - |
Вопрос
Так что я знаю, что STI - самая оскорбленная вещь в истории, но у меня есть случай, когда я думаю, что это может иметь смысл. Мое приложение анализирует кучу различных типов XML -файлов. Каждая модель файла хранит ту же информацию. Просто некоторая информация о том, с каким пользователем он связан, когда он был загружен и где он хранится на S3.
После того, как файл XML хранится, я анализирую ее для информации, которую я использую для создания различных других моделей. Каждый тип файла будет создавать разные вещи. Возможно, может быть 100 или более разных типов XML -файлов, хотя я не думаю, что я собираюсь написать анализаторы для многих. В этом случае имеет смысл?
Недостатком, я думаю, является то, что модели находятся в одном каталоге, поэтому он затопит этот каталог, если только взломать рельсы и не закрепите его в поддир в режиме моделей.
Другой вариант - у меня доброе поле, и я положил что -то в каталог LIB, что обрабатывает все это. Или я использую Resque, может быть, каждый анализатор файла XML должен быть своей собственной работой. Есть недостатки в этом, хотя, как будто неловко принудительно работать в консоли Rails.
Решение
Из вашего объяснения модель «файла» сохраняет только результаты процесса загрузки файла и связанных с ними метаданных. Без дополнительной информации о других видах моделей, генерируемых из проанализированных данных XML, я не понимаю, почему наследство с одной таблицей применяется к этому варианту использования.