CarrierWave не удаляет активы, когда вызвано уничтожение объекта #? - PullRequest
2 голосов
/ 16 февраля 2011

Я использую CarrierWave в приложении Rails3 для загрузки ресурсов. Все хорошо на стороне загрузки, но когда вызывается метод уничтожения, соответствующий актив не удаляется.

Похоже, что CarrierWave создает для этого динамические методы, которые можно использовать в методе уничтожения, поэтому, если модель avatar, то возникают такие методы, как remove_avatar.

Однако я не могу заставить это работать. Любые намеки приветствуются.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2011

Извините, что отвечаю на мой собственный вопрос, но в моем случае это был простой случай пропуска очевидного: модели CarrierWave требовалось строковое поле для указания пути. Итак, моя модель:

class SiteAsset < ActiveRecord::Base
  mount_uploader :asset, AssetUploader

  def store_dir
    'public/assets'
  end

  def extension_white_list
    %w(jpg jpeg gif png pdf doc docx xls xlsx)
  end
end

и правильная миграция была:

class CreateSiteAssets < ActiveRecord::Migration
  def self.up
    create_table :site_assets do |t|
      t.string :title
      t.string :asset
      t.timestamps
    end
  end

  def self.down
    drop_table :site_assets
  end
end

Недостающая часть заклинания заключалась в том, что в моей миграции отсутствовала строка "актив". Я думаю, я просто не видел требования в документах, хотя здравый смысл сделал бы это сразу очевидным.

2 голосов
/ 20 февраля 2011

Я столкнулся с той же проблемой на днях.Он работал с простой формой, но, похоже, не пользовался * remove_model_name * для вложенных форм.

В конце концов, я просто использовал его и использовал скрытое поле с: _destroy

* 1004ссылка: https://github.com/galaxylord/carrierwave_nested
...