125 Views
March 24, 25
スライド概要
⚔コールバックとの戦い 🔥
自己紹介 - 長野県出身、埼玉県在住 エンジニア歴 2年目 主にRailsを触っています
以前のLTの内容と重複する部分があります 👇 https://www.docswell.com/s/1410162281/5QR183-2024-09-27-123547
✅コールバックは便利 メリット - 自動処理は便利 処理の漏れを防げる
😱でもアプリケーションが大きくなるにつれ戦 いが始まる - なにがいつ起きるわかりづらい 予期しない動作につながる テスト時に影響する コールバックの思わぬ挙動
☹コールバックを避けるために updateを使わなくなる - 本来 update を使えば良い場面で、コールバックが邪魔で update_columns を選ばざるを得なくなる update_columns はバリデーションもコールバックもスキップし てしまう 意図しないデータ破壊や不整合の温床になることも、、、
☹コールバックを追加することによってテストに影響が、、、 - コールバックを追加したら既存のテストが落ちまくった、、、 予期せぬ不要なデータが作成されるため Mock地獄に、、、
☹条件によるコールバックの呼び出しで更に複雑に、、、 - どのカラムが何に影響してるか、全体像が見えない 同じトランザクション内で複数の異なるインスタンスを生成し別々に同じレコード に対して更新を行うと先に更新した方でafter_commitが発火してしまい、後に 更新した方は発火しない - https://zenn.dev/hirken/articles/157d6b6a65a359
最後に