0

最も単純な形で...

アプリで Carrierwave を使用して、外部サイトに存在する画像を自動アップロードし、できるだけ負荷をかけないようにしています。初めて画像を表示したいときは、Carrierwave をトリガーしてアップロードを実行します。

データベースには、バックグラウンド Java プロセスで書き込まれた画像 URL がシードされます。次に、Ruby でシード URL を「remote_image_url」に割り当てて保存します。アップロードとバージョン管理が行われるようにします。これはすべてうまくいきます。

ただし、画像が表示されるたびにアップロードがトリガーされないように、アップロードがトリガーされたかどうかを示すフィールドをデータベースに保存する必要があります。「画像」がアップロードされたかどうかを確認するにはどうすればよいですか? 「画像」フィールドは実際にはアップローダーですが、それがトリガーされたかどうかを教えてくれるメソッドはありますか?

4

1 に答える 1

1

Carrierwave は、 経由model.remote_image_url=で割り当てるとすぐにリモート ファイルをダウンロードし、 を呼び出すとすぐにファイルを最終的な場所 (ローカル ストレージ、S3 など) に移動しますmodel.save。これは同期的に行われるため、model.saveが完了し、エラーがなければ、ファイルは保存されています。

別の言い方をすれば、データベースからモデルをロードしたばかりmodel.image?で true の場合はmodel.image.url、有効な URL である必要があります。

于 2013-09-04T21:12:18.747 に答える