В цепочке обратных вызовов ActiveRecord, before_save запускается перед before_create:
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback
Проблема в том, что у меня есть before_create, которое устанавливает reference_number.И у меня есть before_save, который проверяет измененные атрибуты и работает с измененными атрибутами.Так как before_create вызывается после before_save, этот reference_number не считается измененным атрибутом, и поэтому я не могу работать с ним:
before_create :set_reference_number
before_save :set_denormalized_fields
def set_reference_number
prefix = determine_type ? 'CO' : 'CA'
self.reference_number = "#{prefix}-#{1}"
end
def set_denormalized_fields
if changes.any?
handle_changed_attributes changes
end
end
Как изменить цепочку обратного вызова, чтобы гарантировать, что reference_number является измененныматрибут, когда я вызываю set_denormalized_fields?