Skip to content

Fails to invoke after_remove callback when deleting associated record #14365

@ekampp

Description

@ekampp

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions