Существует десять способов сделать что-нибудь, но каков наилучший практический подход к организации моделей Document
и Section
, описанных ниже в Rails?
Документы могут иметь n разделов. Каждый Section
может быть специализированным типом раздела с его собственными атрибутами и ассоциациями, отличающимися от других разделов. И каждый Document
должен отслеживать состояние порядка разделов для всех связанных с ним разделов независимо от их типа.
Я мог бы создать классы моделей для каждого типа Section
и связать их с Document
как has_many SectionTypeA
, has_many SectionTypeA
и написать механизм сортировки, чтобы собрать отсортированную коллекцию всех типов для данного документа.
Я посмотрел на наследование одной таблицы. Но подход STI кажется сомнительным, когда специализированные атрибуты являются более сложными, чем несколько строковых или целочисленных полей. Разделы будут иметь атрибуты, которые сопоставляются с текстовыми столбцами базы данных, и их собственный раздел имеет ассоциации has_many, has_one.
Вот примерный план описанных элементов:
Document
Sections
-Section Type A
Title, freeform text
-Section Type B
Title, collection of urls
-Section Type C
Title, collection of images with title and collection of image comments