2014-11-13 2 views
2

Итак, у меня есть класс корзины покупок, который я сохраняю в сеансе до завершения покупки, и мне нужно загрузить файл в корзину (не спрашивайте, почему, длинная история), как только покупка будет завершена, я выгружаю всю эту информацию в класс, который сохраняется в БД.Carrierwave: Mount Uploader в классе, отличном от ActiveRecord

Я использовал Carrierwave довольно много, и у меня не было никаких проблем до сих пор, но когда я попытался смонтировать загрузчиком в него я получил

undefined method `mount_uploader' for Cart:Class

вопрос, это возможно установить загрузчик в класс, который не наследует ActiveRecord: Base или у меня есть другая проблема вообще? Я не смог заставить его работать, поэтому я не хочу тратить больше времени, если это проблема.

+0

Я нашел жизнеспособное решение, отправленное какой-то парень в 2013 году https://coderwall.com/p/e9d_ja/using -carrierwave-загрузчик-для-бестабличного-модель в рельсах – user1870776

ответ

3

Если у вас есть модель, которая не является подклассом ActiveRecord :: Base вы получите это исключение:

undefined method `mount_uploader' for Derp:Class 

К счастью, вы можете использовать mount_uploader, если ваш класс расширяет модуль CarrierWave :: Закрепить и что класс имеет метод сохранения, который вызывает метод экземпляра store_ (mount_field)!

В целом, ActiveRecord :: Base-менее класс будет выглядеть как

class Derp 
    extend CarrierWave::Mount 
    attr_accessor :name, :image 
    mount_uploader :image, ImageUploader 

    def save 
     self.store_image! 
    end 
end 
Смежные вопросы