ActiveRecord Callbacks List

activerecord, callback, ruby-on-rails

Solution

You can call `Model._save_callbacks` to get a list of all callbacks on save. You can then filter it down to what kind you need e.g. `:before` or `:after` like this:

Model._save_callbacks.select {|cb| cb.kind == :before}

Works the same for `Model._destroy_callbacks` etc.

Problem

I've been going through the rails source for a while now, and I don't think there's a better way of getting the list of all callbacks other than: `ActiveRecord::Callbacks::CALLBACKS` – which is a constant list. Meaning if you're using a gem like devise_invitable that adds a new callback called `:invitation_accepted` with the score `:after` and `:before` then `ActiveRecord::Callbacks::CALLBACKS` will not work. Do you know of an easy fix, other than opening up rails modules and making sure there's an internal list of call-backs per model class?

Original source

Related problems