Я думаю, что мой вопрос лучше всего описать в качестве примера. Допустим, у меня есть простая модель под названием «Вещи», и у нее есть несколько атрибутов, которые являются простыми типами данных. Что-то вроде ...
Thing
- foo:string
- goo:string
- bar:int
Это не сложно. Таблица БД будет содержать три столбца с этими тремя атрибутами, и я могу получить к ним доступ, например, @ thing.foo или @ thing.bar.
Но проблема, которую я пытаюсь решить, состоит в том, что происходит, когда "foo" или "goo" больше не могут содержаться в простом типе данных? Предположим, что foo и goo представляют один и тот же тип объекта. То есть оба они являются экземплярами Whazit только с разными данными. Так что теперь все может выглядеть так ...
Thing
- bar:int
Но теперь появилась новая модель под названием "Whazit", которая выглядит следующим образом ...
Whazit
- content:string
- value:int
- thing_id:int
Пока это все хорошо. Теперь вот где я застрял. Если у меня есть @thing, как я могу настроить его так, чтобы он ссылался на мои 2 экземпляра Whazit по имени (для записи «бизнес-правило» состоит в том, что любая вещь всегда будет иметь ровно 2 Whazit)? То есть мне нужно знать, является ли мой Whazit в основном foo или goo. Очевидно, я не могу сделать @ thing.foo в текущей настройке, но я бы сказал, что это идеально.
Моя первоначальная мысль - добавить атрибут «name» в Whazit, чтобы я мог получить Whatzits, связанный с моим @thing, а затем выбрать Whazit, который я хочу, по имени таким образом. Хотя это кажется уродливым.
Есть ли лучший способ?