Ответ 1
Rails поддерживает одностраничное наследование.
Из AR docs:
Активная запись позволяет наследовать сохранение имени класса в столбец, который по умолчанию называется "тип", (может быть изменено путем перезаписи Base.inheritance_column). Это означает что наследование выглядит следующим образом:
class Company < ActiveRecord::Base; end class Firm < Company; end class Client < Company; end class PriorityClient < Client; end
Когда вы выполните Firm.create(: name = > "37signals" ), эта запись будет сохранен в таблице компаний с типом = "Фирма". Затем вы можете снова взять эту строку, используя имя Company.find(: first, "name = '37signals" ), и он вернет объект Firm.
Если у вас нет столбца типа определенные в вашей таблице, таблица с одним столом наследование не будет инициировано. В в этом случае он будет работать как обычно подклассы без специальной магии для дифференциация между ними или перезагрузите нужный тип с помощью find.
Здесь довольно хороший учебник: http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/