きっかけ
Rails5.2からの機能だから使ったことがありませんでしたが、新規実装時にファイル添付機能をこれで実装することになりました。
その時にキャッチアップした内容を書きたいと思います。
ActiveStrageの設定
1. 専用テーブルの作成
すでにされているいる場合はスキップします。
まだ無い場合は rails g XXX
を使って先に受け皿を作っておきます。
2. 環境への設定
開発はローカルに、productionはS3にするというような切り分けができる
私はproductionの設定がどうなるかわからなかったので、とりあえずベースだけ作ることにした
※とりあえず、regionは東京(ap-northeast-1
)にしておく
本番保存先が決まったら、以下のことをするらしい
Active Storageのコア機能では、s3:ListBucket、s3:PutObject、s3:GetObject、s3:DeleteObjectという4つのパーミッションが必要です。ACLの設定といったアップロードオプションを追加で設定した場合は、この他にもパーミッションが必要になることがあります。
- 環境変数をAWSから直接持ってきたい場合はAWS SDKを使う→AWS SDK for Ruby の設定
他に検討したことはこれ。
- ミラーサービスは一旦つけない
- gemはs3に連携する環境だけで良い気がするが、一旦localの場合も入れておく
3. レコードとS3データの紐付けをして保存できるようにする
- レコードの紐付けは
has_many_attached :evidence_files
という設定を作ったモデルに書く
4. viewに添付ボタンを作る
私は、file_fieldを使用しました。
multiple: true
をつけると複数選択可能になります。
最後に
主にRailsガイドを見てやったやりましたが、わかりやすく書いてあってよかったです。
全体の流れはこのブログを参考にさせてもらいました