3

AlbumとAlbumImageの2つのモデルがあります。

各アルバムにはアルバム画像が関連付けられており、Carrierwave を使用して AlbumImageUploader クラスを介してアップロードされます。

ここで、既存の関連付けられたアルバム イメージを使用して、各アルバムのアルバム カバーを選択したいと考えています。アルバム カバーとして使用する前に、この選択した画像を処理 (トリミングおよびサイズ変更) する必要があります。トリミングとサイズ変更機能を停止し、この処理済みバージョンのアルバム イメージを保存するための AlbumCoverUploader クラスを作成しました。

問題は、今回はフォームを使用して新しい画像ファイルをアップロードするのではなく、ファイル システム内の既存のアルバム画像を使用していることです。この画像を A​​lbumImageUploader クラスから AlbumCoverUploader クラスに転送する方法がわかりません。

何か案は?

4

1 に答える 1

1

これは本当に簡単です。フォームからアップロードする場合と同じように、AlbumCoverUploader を構成する必要があります。

ただし、既存のレコードに関連付けられている画像を使用するには、次の操作を行う必要があります。

album = Album.find(id)                  # your existing album
album_image = album.album_images.first  # the image you want as cover
album.cover = File.open(album_image.image.current_path)
album.save

これにより、画像ファイルが取得され、AlbumCoverUploader の入力として使用され、画像の独自のコピーが作成されます。

于 2012-09-11T19:09:29.090 に答える