Используйте ИППП для различий в поведении, как вы сказали. Пример, который я бы использовал:
У вас есть Purchase, и у вас есть PartialPurchase, единственная разница с данными заключается в том, что когда PartialPurchase завершен, он получает отношение к вновь созданной Purchase.
Таким образом, поведение отличается, также есть случаи, когда я хотел бы, чтобы PartialPurchase и Purchase отображались в одном запросе. Коммерческий агент хочет видеть все свои покупки и частичные покупки одновременно, поэтому имеет смысл хранить эти данные в одной таблице. В противном случае все атрибуты одинаковы для каждой модели.
В этом случае я бы использовал STI вместо CTI.
Хотя, если когда-нибудь данные начнут сильно различаться, я, вероятно, создам еще одну таблицу, связанную с таблицей STI, а в случае множества разных полей я, вероятно, подумаю о CTI.
person
unflores
schedule
24.01.2018