KDOC 398: GORMフックはレシーバーがnilになる可能性がある

この文書のステータス

  • 作成
    • 2025-06-19 貴島
  • レビュー
    • 2025-06-25 貴島

概要

GORMではHooksを使用できる。これによってCRUD操作の前後の処理を挿入できる。

func (u *User) BeforeDelete(tx *gorm.DB) (error) {
        return nil
}

もし Delete() にスライスのUserを渡し一括で削除しようとすると、フックは1度だけ実行され、レシーバはnilになる。

直感的ではないが、こうなっていなければ1件1件削除するたびにモデル情報を取得する必要があり、パフォーマンスの問題になるだろう。

関連

なし。