我在Rails3应用中使用CarrierWave上传资源。上传方面都很好,但是当调用destroy方法时,不会删除相应的资产。
看起来CarrierWave为此创建了一个可以在destroy方法中使用的动态方法,因此如果模型是avatar
,那么像remove_avatar
这样的方法就会出现。
然而,我无法让任何这些工作。任何提示都非常赞赏。
答案 0 :(得分: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
咒语的缺失部分是我的迁移中缺少“资产”字符串。我想我只是没有看到文件中的要求,虽然良好的意义会使它立即明显。
答案 1 :(得分:2)
前几天我遇到了同样的问题。它使用简单的形式,但似乎不喜欢嵌套表单上的* remove_model_name *。
最后我把它吸了起来并使用了一个hidden_field:_destroy