Я бы порекомендовал добавить атрибут String "type" в вашу структурную таблицу для удовлетворения наследования одной таблицы и добавить обратные вызовы before_save для установки правильных значений в любой таблице.
Скажем, у вас есть StructureType с именем "Basic". В Rails это означает, что вы хотите иметь иерархию классов:
Структура
В класс структуры добавить:
before_create :set_structure_type_fk
def set_structure_type_fk
self.structure_type = StructureType.find_by_name(\
self.class.name.gsub(/Structure/, '').downcase)
end
Надеюсь, это поможет.
Обратите внимание, что этот подход означает, что StructureType.name должен быть неизменным: после создания он никогда не должен изменяться, за исключением миграции базы данных, которая обновляет обе таблицы соответственно.
K