Вам не нужно бросать, поскольку Ruby не выполняет проверку типов во время компиляции. Что вы пытаетесь выполнить?
Скажем, у вас есть класс Dad и дочерние классы Son и Daughter.
Вы можете просто иметь переменную @dad и хранить в ней объект Son или Daughter, и просто относитесь к нему так, как если бы это был Dad. Пока они реагируют на одни и те же методы, это не имеет значения. Это концепция, называемая "утиная печать".
Ответ 3
Создайте новый экземпляр B для установки значений атрибутов, которыми он делится с A.
Что-то вроде:
class C < ActiveRecord::Base
end
class A < C
end
class B < C
end
@a = A.new(...)
@b = B.new(@a.attr1, @a.attr2, ..., @a.attrN)