прежде всего, я использую rails 3.1.3 и carrierwave от мастера ветка репозитория github.
Я использую ловушку after_init для определения полей на основе атрибута экземпляр модели страницы и определите средства доступа к атрибутам для этого поля которые хранят значения в сериализованном хэше (надеюсь, ясно, что я говоря о). вот урезанная версия того, что я делаю:
class Page < ActiveRecord::Base
serialize :fields, Hash
after_initialize :set_accessors
def set_accessors
case self.template
when 'standard'
class << self
define_method 'image' do
self.fields['image']
end
define_method 'image=' do |value|
self.fields['image'] = value
end
end
mount_uploader :image, PageImageUploader
end
end
end
end
исключение команды mount_uploader дает мне доступ к атрибут, как я хочу. но когда я устанавливаю загрузчик, появляется сообщение об ошибке сообщение о том, что 'undefined method new for nil class'
Я прочитал в источнике, что есть методы read_uploader и write_uploader в модуле расширений. как мне переопределить их, чтобы сделать команду mount_uploader работать с моим «виртуальным» атрибутом.
Надеюсь, у кого-то есть идея, как я могу решить эту проблему. большое спасибо за помощь.
С уважением. Доминик.