Я использовал STI несколько раз. Рассмотрим CMS, которая может иметь Page, NewsItem, BlogItem и т. Д.
Каждый из них может происходить из общего класса, который, в свою очередь, наследуется от ActiveRecord. Таблица для каждого из них будет одинаковой (title, body, tags, publ_at), но каждая модель может иметь разные ассоциации, разные статусы или разные рабочие процессы, поэтому у каждого есть свой код в своем собственном классе. Тем не менее все они имеют общую таблицу и родительский класс. Это также позволяет мне использовать родительский класс для перекрестного поиска по классу и автоматически приводить полученный массив записей.
Существуют и другие способы решения этой проблемы, и, возможно, это не лучший пример, но, безусловно, бывают случаи, когда STI полезен в ситуациях, когда поведение объекта может отличаться, но постоянное состояние остается тем же. Конечно, вы должны быть уверены, что это также верно в будущем.
В вашем случае комментарии и контактные сообщения различны. Похоже, что нет никакой пользы, если они находятся в одной таблице. Возможно, поместите общий код в родительский класс или, что еще лучше, в модуль в /lib.