Skip to content
  • Seb Jacobs's avatar
    d5bf649a
    Add support for bidirectional destroy dependencies · d5bf649a
    Seb Jacobs authored
    Prior to this commit if you defined a bidirectional relationship
    between two models with destroy dependencies on both sides, a call to
    `destroy` would result in an infinite callback loop.
    
    Take the following relationship.
    
        class Content < ActiveRecord::Base
          has_one :content_position, dependent: :destroy
        end
    
        class ContentPosition < ActiveRecord::Base
          belongs_to :content, dependent: :destroy
        end
    
    Calling `Content#destroy` or `ContentPosition#destroy` would result in
    an infinite callback loop.
    
    This commit changes the behaviour of `ActiveRecord::Callbacks#destroy`
    so that it guards against subsequent callbacks.
    
    Thanks to @zetter for demonstrating the issue with failing tests[1].
    
    [1] rails#13609
    d5bf649a
    Add support for bidirectional destroy dependencies
    Seb Jacobs authored
    Prior to this commit if you defined a bidirectional relationship
    between two models with destroy dependencies on both sides, a call to
    `destroy` would result in an infinite callback loop.
    
    Take the following relationship.
    
        class Content < ActiveRecord::Base
          has_one :content_position, dependent: :destroy
        end
    
        class ContentPosition < ActiveRecord::Base
          belongs_to :content, dependent: :destroy
        end
    
    Calling `Content#destroy` or `ContentPosition#destroy` would result in
    an infinite callback loop.
    
    This commit changes the behaviour of `ActiveRecord::Callbacks#destroy`
    so that it guards against subsequent callbacks.
    
    Thanks to @zetter for demonstrating the issue with failing tests[1].
    
    [1] rails#13609
Loading