Хорошо, вы можете проверить наличие метода, который вызывает обратный вызов, как таковой.
@model.methods.include?('before_callback_method_name')
Однако это просто проверяет, присутствует ли метод, который выполняет обратный вызов, а не его специфический тип.
Я не могу найти способ получить список обратных вызовов для модели.
Единственным вариантом будет проверить, что модель делает так, как предполагалось, при наличии обратного вызова, т.е. если обратный вызов меняет строкупри обновлении проверьте, что строка обновляется при обновлении.
* РЕДАКТИРОВАТЬ *
Вы можете получить список обратных вызовов, например, так:
@u._validate_callbacks
Возвращает цепочку обратного вызова, которая включает в себя имена и, что важно, тип.
>> u._validate_callbacks.first.class
=> ActiveSupport::Callbacks::Callback
>> u._validate_callbacks.first.kind
=> :before
>> u._validate_callbacks.first.filter
=> :validate_associated_records_for_sites
Должна быть в состоянии точно проверить, загружен ли он сейчас.