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

У Google Chrome странное поведение при переключении между http / https. Я думаю, у него есть какой-то кеш. Нет ничего плохого в вашем PHP-скрипте, если он работает в FF. Так что дайте Chrome немного времени ...

22
задан fotanus 21 May 2013 в 21:11
поделиться

3 ответа

43
ответ дан 29 November 2019 в 04:26
поделиться

Вам не нужно приводить, так как Ruby не выполняет проверку типов во время компиляции. Что вы пытаетесь достичь?

Скажем, у вас есть класс Dad и дочерние классы Son и Daughter.

Вы можете просто иметь переменную @dad и хранить в ней объект Son или Daughter, и просто обращаться с ним, как если бы он был Dad. Пока они отвечают на те же методы, это не имеет значения. Это понятие называется «типирование утки».

5
ответ дан 29 November 2019 в 04:26
поделиться

Создайте новый экземпляр 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)
-2
ответ дан 29 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: