Я сериализации объекта в поле базы данных с помощью ActiveRecord-х: сериализации функциональность в Ruby On RailsКак я могу получить YAML :: load для вызова const_missing?
class DrawElement < ActiveRecord::Base
...
serialize :content
end
Причина я сериализации объектов является то, что я динамически загружаются типы с диска с помощью const_missing, так Мне не нужно настраивать таблицы баз данных.
def DrawElement.const_missing(const)
require File.join('draw_elements',const.to_s)
draw_class = const_get(const)
return draw_class if draw_class
raise "Draw Element not found #{const.to_s}"
end
Так что, когда я хочу добавить раздаточный элемент, я делаю что-то подобное в irb
draw_element.content = DrawElement::Text.new
Все здесь прекрасно работает
Проблема заключается в том, что, когда я пытаюсь загрузить объект из базы данных в новом сеансе YAML::load
никогда не вызывает const_missing
, чтобы потребовать определения класса перед загрузкой файла. Итак, все мои @content
объектов возвращаются как YAML::Object
Есть ли лучший способ сделать это? Я пытаюсь добавить новые типы без необходимости изменять базу данных или иметь связь has_many_polymorph
между чертежами и документом.
Рубин на Rails v.2.3.8, Ruby v. 1.8.7