2

Rails3アプリでCarrierWaveを使用してアセットをアップロードしています。アップロード側ではすべて問題ありませんが、destroyメソッドが呼び出されても、対応するアセットは削除されません。

CarrierWaveは、destroyメソッドで使用できるこのための動的メソッドを作成しているように見えます。そのため、モデルがSpringのようなメソッドである場合は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* を楽しんでいるようには見えませんでした。

結局、私はそれを吸い上げて、hidden_​​field を :_destroy で使用しました

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

于 2011-02-20T09:12:21.537 に答える