Що таке ActiveRecord Callbacks у Rails?

Що таке 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 — вони приховані, і код може стати важким для розуміння.