4

アプリをRails 3にアップグレードしようとしていて、attachment_fuが壊れているので、私はcarrierwaveに移動します。 attachment_fuからcarrierwaveにアップグレードするための体系的なプロセスはありますか?それともチュートリアルですか?今は、データベースのすべてを正しく終了することにもっと興味があります。私はattachment_fuとcarrierwaveにfilesystem storeオプションを使用しています。attachment_fuからcarrierwaveにアップグレードする体系的な方法は?

私はモジュールからhttp://ruby.simapse.com/2011/03/migrate-attachmentfu-to-carrierwave.htmlを見つけました。これは、carrierwaveにattachment_fuと同じディレクトリとファイル名を使用するよう指示します。しかし、答え全体ではなく、その一部です。例えば

は、デシベルで、私は:filename:content_type:size:width:height、および:user_id属性で、UserImageモデルを持っています。私は正確に:user_avatarに格納されますどのような:user_avatar列を追加し、私のモデルに次の

attr_accessible :user_avatar 
mount_uploader :user_avatar, UserAvatarUploader 

。それは単なるファイル名ですか?または、他の何か? ("hello_world.png"のように保存)のデータを:user_avatarに移動するための移行を作成するだけでよいですか?その場合、:user_avatar列を作成するのではなく、元の:filenameを使用する必要があります。

+0

これを達成するためにあなたのプロセスに書き上げがありますか?私は古いレガシーアプリケーションをアップグレードしていて、いくつかのプロセス記述を探していました。 – JohnMetta

答えて

1

アップローダをマウントする列には、アップロードされたファイルの「識別子」が格納されています。デフォルトではファイル名だけですが、レコードのIDとは別にほとんど何かにオーバーライドすることができます(保存後までの内容が分からないため)。 、あなたのアップローダークラスでこの定義を追加します:オーバーライドすること

def identifier 
     # This is what gets put in the database column! 
     model.created_on 
end 

この例では、私は、モデルからCREATED_ON属性を使用しました。独自のストレージメカニズムを作成する場合は、この識別子でファイルを一意に識別できる必要がありますので、選択したものに注意してください。

アップロードするファイルを記述するように列の名前を変更することをお勧めします(carrierwaveの例のように)。その後、識別子をいつでもfilenameから別のものに変更することができます。

関連する問題