Ответ 1
#becomes
- это то, что вы ищете:
http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-becomes
В настоящее время я использую однонаправленное наследование ActiveRecord.
Как я могу отнести одну из моих моделей от типа А к Б? Они имеют один и тот же родитель.
#becomes
- это то, что вы ищете:
http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-becomes
Вам не нужно бросать, поскольку Ruby не выполняет проверку типов во время компиляции. Что вы пытаетесь выполнить?
Скажем, у вас есть класс Dad
и дочерние классы Son
и Daughter
.
Вы можете просто иметь переменную @dad и хранить в ней объект Son
или Daughter
, и просто относитесь к нему так, как если бы это был Dad
. Пока они реагируют на одни и те же методы, это не имеет значения. Это концепция, называемая "утиная печать".
Создайте новый экземпляр 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)