2

Rails が画像アセットを処理する方法について読んだ後、私は混乱し、アップロードした画像をアプリのディレクトリ ツリーのどこに保持するかを決めるのに苦労しています。ユーザーが自分の Rails アプリに画像をアップロードした場合、image_save_path を /assets/images/ または /public/images にする必要がありますか?

私の懸念/質問: ユーザーが選択したときに画像を公開できるようにしたい場合は、「非公開」のアップロードされた画像 (画像は current_user == image.owner の場合にのみ提供される) をもっと考慮する必要がありますpublic/images ではなく assets/images にある場合は保護されますか? 同様に保護されていますか?どういうわけか保護されていませんか?

画像にアセット パイプラインを使用する利点は、プロダクション モードでファイル名がハッシュされることだけだと思い込んでいいのでしょうか? リソースがどのように提供されるかという点で、ここで暗黙のセキュリティの追加または低下はありますか? これはもっと微妙な意見の問題ですか、それとも Rails の慣例にここで何か言いたいことがありますか?

ありがとう!

EDIT1: アップロードしたユーザーが利用できるようにしたいが、ゲストや他のユーザーが見つけられないようにしたいアップロードされたコンテンツをどのように処理しますか? アップロードされたコンテンツをツリー外の web_root の下に保存する必要がありますか (できますか?)。

4

1 に答える 1

0

アプリケーション アセットは、背景やアイコン (画像の場合) など、アプリケーションの一部であるアセットです。アセット パイプラインは、ユーザーがアップロードした画像とは関係ありません。それらを分離しておき、必要に応じて別の CDN から提供することをお勧めします。

アセット パイプラインでのファイル名のハッシュは、アセットのコンパイル中にのみ行われるため、特定の画像へのリンクは画像コンテンツに対して一意になります。これにより、画像やその他のアセットに複雑なキャッシュ ヘッダーを設定することを回避できます。画像が変更されるとファイル名も変更され、キャッシュされたバージョンはまったく使用されなくなります。

これはすべて、ユーザーがアップロードした画像には当てはまりません。画像のアセットをオンザフライでコンパイルするつもりはありません。

于 2012-10-31T16:41:42.623 に答える