アヤオのレベリングキロク

日々のインプットをここでアウトプットします

【Rails】ActiveStrageを使ってみた話

きっかけ

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の設定といったアップロードオプションを追加で設定した場合は、この他にもパーミッションが必要になることがあります。

他に検討したことはこれ。

  • ミラーサービスは一旦つけない
  • gemはs3に連携する環境だけで良い気がするが、一旦localの場合も入れておく

3. レコードとS3データの紐付けをして保存できるようにする

  • レコードの紐付けはhas_many_attached :evidence_files という設定を作ったモデルに書く

4. viewに添付ボタンを作る

私は、file_fieldを使用しました。

multiple: true をつけると複数選択可能になります。

最後に

主にRailsガイドを見てやったやりましたが、わかりやすく書いてあってよかったです。

railsguides.jp

全体の流れはこのブログを参考にさせてもらいました

bagelee.com