Що таке Active Record Callbacks у Rails?
Callbacks — це спеціальні методи, які Rails викликає автоматично у певні моменти життя об’єкта (наприклад, перед збереженням або після видалення).
Навіщо вони потрібні?
Callbacks допомагають виконувати певні дії автоматично — наприклад:
- очищати пробіли в полі перед збереженням;
- надсилати email після створення запису;
- вести лог, коли щось оновлюється.
Як це працює?
Ви додаєте у модель певний метод, а потім «прикріплюєте» його до події.
Приклад:
class User < ApplicationRecord
before_save :downcase_email
def downcase_email
self.email = email.downcase
end
end
Що тут відбувається?
before_save
означає: виконай методdowncase_email
перед збереженням.- Метод змінює email на маленькі літери.
Найпопулярніші callbacks
Callback | Коли викликається |
---|---|
before_validation |
перед перевіркою валідності |
after_validation |
після перевірки |
before_save |
перед збереженням (create або update ) |
after_save |
після збереження |
before_create |
тільки перед створенням |
after_create |
тільки після створення |
before_update |
перед оновленням |
after_update |
після оновлення |
before_destroy |
перед видаленням |
after_destroy |
після видалення |
Ще один приклад
class Post < ApplicationRecord
before_create :set_default_title
def set_default_title
self.title = "Без назви" if title.blank?
end
end
Цей callback автоматично додасть заголовок, якщо користувач нічого не ввів.
Важливо!
- Якщо у методі є помилка — збереження не відбудеться.
- Не варто зловживати callbacks — вони приховані, і код може стати важким для розуміння.