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