同じ問題に関する複数の質問、アクティブストレージがファイルのURLを返す方法
今のところ、デフォルトの設定では、次の(クラウドまたはローカル)は、どういうわけか次を返します:
_domain/_path/_superlong_hash/_original_filename._ext
ペーパークリップや他の多くの既存の宝石を考えると、_path / _superlong_hash / _original_filename._extの部分はカスタマイズする必要があり、ファイルのURLがクリーンになる可能性があります。
それによる意味:
_path
よりカスタムなものでを「プロキシ」する方法はありますか?_superlong_hash
ますか?ワンライナーにするには、ファイルのURLをどのようにカスタマイズしますか?
私はあちこちでまともなURLでファイルを提供するカスタムコントローラーを作成することになる人々を見てきましたが、これはダメだと認めましょう(IMHO)
ActiveStorageがすぐに私が間違っていることを証明することを願っていますが、Rails 5.2を書いている時点では、正直な答えは、「no go」オプションを選択し、独自のコントローラーを一緒にハッキングし、ActiveStorageにパッチを適用してファイルを公開する必要があるようです。
プロキシについては、以下を参照してください。
https://github.com/rails/rails/issues/31419
https://github.com/rails/rails/pull/30465
ファイルの名前を変更する場合:
@user.avatar.blob.update(filename: 'NewFilename.jpg')
_superlong_hash / urlの操作
これには良い答えがありません。ActiveStorageを使用すると、ファイルのアップロードが息を呑むほど簡単になりますが(操作もやや簡単になります)、Railsの意見によるソフトウェア哲学が端にあり、URL生成への抽象化アプローチによってその曖昧さを回避することは非常に困難です。ActiveStorageには、生成されたファイルやバリアントへの永続的または直接リンクなどの基本的なことを行うための組み込みメソッドはありません。したがって、ファイル/画像のキャッシュと適切なURLは、現時点ではActiveStorageを使用してすぐに使用することはできないようです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加