Techioz Blog

Active Storage ファイルアップロードのコールバック

概要

モデル上のアクティブなストレージ ファイルに対するコールバックはありますか

モデル上のフィールドが変更されると、after_update または after_save が呼び出されます。しかし、更新するとき(または新しいファイルをアップロードするとき)、コールバックは呼び出されないようです。

コンテクスト:

class Person < ApplicationRecord
  #name :string
  has_one_attached :id_document

  after_update :call_some_service

  def call_some_service
    #do something
  end
end

新しい id_document がアップロードされるとき、after_update は呼び出されませんが、人の名前が変更されると、after_update コールバックが実行されます。

解決策

今のところ、このケースにはコールバックはないようです。

あなたができることは、人物モデルにファイルを添付するときに作成されるアクティブなストレージ添付ファイルの作成を処理するモデルを作成することです。

そこで新しいモデルを作成します

class ActiveStorageAttachment < ActiveRecord::Base
  after_update :after_update

  private
  def after_update
    if record_type == 'Person'
      record.do_something
    end
  end
end

通常、モデル テーブルはデータベース内にすでに作成されているため、移行の必要はなく、このモデルを作成するだけです。