Callbacks là hooks vào lifecycle của model — chạy tự động khi object được create/update/destroy.
Thứ tự khi save một record mới:
before_validation → after_validation
→ before_save → before_create
→ (INSERT INTO DB)
→ after_create → after_save → after_commitruby
class Order < ApplicationRecord
before_create :generate_reference_code
after_commit :send_confirmation_email, on: :create
private
def generate_reference_code
self.ref = SecureRandom.hex(6)
end
endafter_commit chạy sau khi transaction commit — dùng cho side-effects (gửi mail, enqueue job).
Dùng after_save có thể gửi mail dù transaction sau đó rollback.