Techioz Blog

Apartment gem を使用した ActiveStorage は、テナント スキーマではなくパブリック スキーマのみをチェックしてファイルをロードします

概要

Apartment (具体的には ros-apartment フォーク) を使用して、Spree コマース アプリ (ruby 3.2.0、rails 7) でマルチテナントをセットアップしようとしています。

ファイルをアップロードすると、それらは正しいテナント スキーマに追加され、 ActiveStorage::Blob で確認できます。しかし、イメージにアクセスしようとすると、テナントスキーマではなくパブリックスキーマの ActiveStorage::Blob のみが参照され、最終的に 404 エラーがスローされます ->

ActiveRecord::RecordNotFound in ActiveStorage::Representations::ProxyController#show Couldn't find ActiveStorage::Blob with 'id'=1

正しく動作させるために何か他の設定をする必要がありますか?

config.middleware.use Apartment::Elevators::Subdomain を application.rb に追加しました。

助けていただければ幸いです。ありがとうございます。

解決策

これは Rails 7 との互換性の問題でした。Rails 6.1.2 に切り替えたところ、正しく動作しました。

アパートとロスアパートメントの宝石はもうメンテナンスされていないようです。

参照: https://github.com/rails-on-services/apartment/issues/234#issuecomment-1756833846