2

我在 Rails3 应用程序中使用 CarrierWave 来上传资产。上传端一切正常,但是当调用destroy方法时,相应的资产并没有被删除。

看起来 CarrierWave 为此创建了可以在销毁方法中使用的动态方法,因此如果模型是这样的方法,那么就会avatar出现remove_avatar

但是,我无法让其中任何一个工作。非常感谢任何提示。

4

2 回答 2

3

很抱歉回答我自己的问题,但就我而言,这是一个忽略显而易见的简单情况: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

咒语中缺少的部分是我的迁移中缺少“资产”字符串。我想我只是没有看到文件中的要求,尽管明智的做法会让它立即显而易见。

于 2011-02-20T18:13:51.273 回答
2

前几天我遇到了同样的问题。它适用于简单的表单,但似乎不喜欢嵌套表单上的 *remove_model_name*。

最后我只是把它吸了起来,并使用了一个带有 :_destroy 的 hidden_​​field

供参考:https ://github.com/galaxylord/carrierwave_nested

于 2011-02-20T09:12:21.537 回答