I have a class with a has_many association. I have a after_add and an after_remove callback on the association, like this:
# rails 4.2.0.alpha
has_many :character_levels,
after_add: :log_adding_event,
after_remove: :log_removing_event
def log_adding_event
Log.create!({ event: "adding" })
end
def log_removing_event
Log.create!({ event: "removing" })
end
When adding a character level, I can see that a Log instance is created. I can even replicate in tests. But when deleting an associated record, the callback isn't getting executed correctly:
Character.find(1).character_levels << CharacterLevel.find(1)
# => Results in a Log record being created
Character.find(1).character_levels.delete(CharacterLevel.find(1))
# => Should result in a Log being created, but doesn't