2011-12-28 27 views
6

? (この質問は実際には同じ近いがありません:Renaming uploaded files with Carrierwave)たとえば、model.image.urlfoo-bar-jpgであればどのように私はfoo-bar.jpgするファイルと、対応するデータベースフィールドの両方の名前を変更することができますか?名前変更既存のCarrierWaveファイルあなたはCarrierWaveで既存のイメージの名前を変更するにはどうすればよい

model.image.recreate_versions!は、新しいファイルを作成しますが、データベースには、モデルの画像フィールドを変更しません。

答えて

1

私はここに記載されている技術を使用:How to assign a remote file to Carrierwave?

これは行くための最善の方法ではないかもしれないが、それは私のために働いた。私のリモートファイルはちょうど古いファイル名/パスであった。

はまず、私が欲しかった新しいファイル名のスタイルを持っているCarrierwaveアップローダーを変更しました。それから私は、レコードを反復処理し、このようなファイルを更新するrakeタスクを書いた:

model.remote_image_url = old_image_url 
model.save! 

これは、あなたの更新アップローダーに基づいて名前/パスを設定し、再度、既存のファイルをアップロード(およびすべてのバージョンを再作成)します。私は古いファイルのクリーンアップの問題にまだ取り組んでいませんが、あなたのstore_dirが同じである場合(私も同様に変更されています)、これがどのように機能するかわかりません。

物事の混乱を作るために、その簡単に、あなたの完全なテーブルを介して実行する前に、いくつかの記録に徹底的にテストするようにしてください。 store_dirを変更すると、既存のファイルのルックアップがすべて破損することに注意してください。これを見つけた

2

Carrierwaveのlocomotive branchは、名前の変更をサポートしているようだ - 特定のファイルがhereです。

ありますが、ファイルタイプを変換する際に、メインでfile rename supportではありませんが、何のリネームのサポート:

"This should help with situations where a file has multiple versions, 
and at least one of the versions is of a different format than the master version." 
0

、それは時代遅れのように思えるが、多分誰かに役立ちます: https://github.com/stvkoch/carrierwave_single_store

関連する問題