У меня есть приложение на базе Squeryl. Я определяю свои модели как классы case, в основном потому, что мне удобно иметь методы копирования.
У меня есть две модели, которые строго связаны. Поля совпадают, многие операции являются общими, и они должны храниться в одной таблице БД. Но есть поведение, которое имеет смысл только в одном из двух случаев или имеет смысл в обоих случаях, но отличается.
До сих пор я использовал только один класс case с флагом, который определяет тип модели, и все методы, которые различаются в зависимости от типа модели, начинаются с if. Это раздражает и не совсем безопасен.
Что я хотел бы сделать, так это разложить на множители общее поведение и поля в классе-предке и унаследовать от него две фактические модели. Но, насколько я понимаю, наследование от классов case не одобряется в Scala и даже запрещено, если подкласс сам является классом case (не в моем случае).
Какие проблемы и подводные камни я должен знать при наследовании от класса case? Имеет ли смысл в моем случае это делать?