Подтвердить что ты не робот

Как передать объект ActiveRecord другому классу при использовании STI?

В настоящее время я использую однонаправленное наследование ActiveRecord.

Как я могу отнести одну из моих моделей от типа А к Б? Они имеют один и тот же родитель.

4b9b3361

Ответ 2

Вам не нужно бросать, поскольку 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)