Tenho um aplicativo baseado no Squeryl. Eu defino meus modelos como classes de caso, principalmente porque acho conveniente ter métodos de cópia.
Tenho dois modelos estritamente relacionados. Os campos são os mesmos, muitas operações são comuns e devem ser armazenadas na mesma tabela de banco de dados. Mas há algum comportamento que só faz sentido em um dos dois casos, ou que faz sentido nos dois casos, mas é diferente.
Até agora, usei apenas uma única classe de caso, com um sinalizador que distingue o tipo do modelo, e todos os métodos que diferem com base no tipo do modelo começam com um if. Isso é irritante e não é totalmente seguro para o tipo.
O que eu gostaria de fazer é fatorar o comportamento comum e os campos em uma classe de caso ancestral e ter os dois modelos reais herdados dela. Mas, até onde eu entendo, herdar de classes de caso é desaprovado em Scala e é até proibido se a própria subclasse for uma classe de caso (não é o meu caso).
Quais são os problemas e armadilhas que devo estar ciente ao herdar de uma classe de caso? Isso faz sentido no meu caso?