こんにちは。今回はs3に画像をアップロードし、画像を表示させるのにかなり苦労しましたので次回からは沼らないように自分が成功した方法を備忘録として残しておきます。ここではdockerの構築方法は割愛します。
やりたいこと
ActiveStorageを用いてS3に画像をアップロードし、画像を表示したい。
前提
dockerを用いてアプリを開くことができる。
参考にしたサイト
基本的にはこちらのサイトを参考にして作成した。
つまづいたところ
dockerfile
credentials.yml.encを編集するためにvimで編集する必要があるのですが、自分のdockerでは初期状態ではvimを開くことが出来なかったので
RUN apt-get update
RUN apt-get install vim
としたところエラーが発生。対処としては
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "vim"]
とすることで無事vimをインストール出来た。
カラムを用意する必要はない
app/models/user.rb
class User < ApplicationRecord
has_one_attached :avatar
end
ActiveStorageでは、ファイルデータを保存するためにそれぞれのテーブルに個別にカラムを用意しなくても上記の記述を追加するだけでデータの保存ができる。
以上で無事画像を表示することが出来ました。carrierwaveでは画像を表示することが出来なかったので今後はActiveStorageを使っていこう。