我在 Rails3 应用程序中使用 CarrierWave 来上传资产。上传端一切正常,但是当调用destroy方法时,相应的资产并没有被删除。
看起来 CarrierWave 为此创建了可以在销毁方法中使用的动态方法,因此如果模型是这样的方法,那么就会avatar
出现remove_avatar
。
但是,我无法让其中任何一个工作。非常感谢任何提示。
我在 Rails3 应用程序中使用 CarrierWave 来上传资产。上传端一切正常,但是当调用destroy方法时,相应的资产并没有被删除。
看起来 CarrierWave 为此创建了可以在销毁方法中使用的动态方法,因此如果模型是这样的方法,那么就会avatar
出现remove_avatar
。
但是,我无法让其中任何一个工作。非常感谢任何提示。
很抱歉回答我自己的问题,但就我而言,这是一个忽略显而易见的简单情况: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
咒语中缺少的部分是我的迁移中缺少“资产”字符串。我想我只是没有看到文件中的要求,尽管明智的做法会让它立即显而易见。
前几天我遇到了同样的问题。它适用于简单的表单,但似乎不喜欢嵌套表单上的 *remove_model_name*。
最后我只是把它吸了起来,并使用了一个带有 :_destroy 的 hidden_field