---
title: コールバックとの戦い
tags: 
author: [けい](https://www.docswell.com/user/keit1722)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GJ5RV22P74.jpg?width=480
description: コールバックとの戦い by けい
published: March 24, 25
canonical: https://www.docswell.com/s/keit1722/ZV1YWV-2025-03-24-134934
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GJ5RV22P74.jpg)

⚔コールバックとの戦い 🔥


# Page. 2

![Page Image](https://bcdn.docswell.com/page/9E2D344ZER.jpg)

自己紹介
-
長野県出身、埼玉県在住
エンジニア歴 2年目
主にRailsを触っています


# Page. 3

![Page Image](https://bcdn.docswell.com/page/D7Y21MMN7M.jpg)

以前のLTの内容と重複する部分があります 👇
https://www.docswell.com/s/1410162281/5QR183-2024-09-27-123547


# Page. 4

![Page Image](https://bcdn.docswell.com/page/VEN82WWVJ8.jpg)

✅コールバックは便利
メリット
-
自動処理は便利
処理の漏れを防げる


# Page. 5

![Page Image](https://bcdn.docswell.com/page/Y79K1XXV73.jpg)

😱でもアプリケーションが大きくなるにつれ戦
いが始まる
-
なにがいつ起きるわかりづらい
予期しない動作につながる
テスト時に影響する
コールバックの思わぬ挙動


# Page. 6

![Page Image](https://bcdn.docswell.com/page/G78R4224ED.jpg)

☹コールバックを避けるために updateを使わなくなる
-
本来 update を使えば良い場面で、コールバックが邪魔で
update_columns を選ばざるを得なくなる
update_columns はバリデーションもコールバックもスキップし
てしまう
意図しないデータ破壊や不整合の温床になることも、、、


# Page. 7

![Page Image](https://bcdn.docswell.com/page/L7LK622VER.jpg)

☹コールバックを追加することによってテストに影響が、、、
-
コールバックを追加したら既存のテストが落ちまくった、、、
予期せぬ不要なデータが作成されるため Mock地獄に、、、


# Page. 8

![Page Image](https://bcdn.docswell.com/page/4EM2588NEW.jpg)

☹条件によるコールバックの呼び出しで更に複雑に、、、
-
どのカラムが何に影響してるか、全体像が見えない
同じトランザクション内で複数の異なるインスタンスを生成し別々に同じレコード
に対して更新を行うと先に更新した方でafter_commitが発火してしまい、後に
更新した方は発火しない
-
https://zenn.dev/hirken/articles/157d6b6a65a359


# Page. 9

![Page Image](https://bcdn.docswell.com/page/PERM355479.jpg)

最後に


