This project is archived and is in readonly mode.
instances of a Join Model should have their before_destroy callbacks called when destroyed through @instance.others.clear or @instance.update_attributes
Reported by gsaravia | April 23rd, 2010 @ 07:16 PM
with the following setup:
class Foo < ActiveRecord::Base
has_many :bars, :through => :foo_bar_joins
has_many :foo_bar_joins
end
class Bar < ActiveRecord::Base
has_many :foos, :through => :foo_bar_joins
has_many :foo_bar_joins
end
class FooBarJoin < ActiveRecord::Base
belongs_to :foo
belongs_to :bar
before_destroy :i_am_called
def i_am_called
raise FooBarJoinBeforeDestroyCallbackIsCalled
end
end
class FooBarJoinBeforeDestroyCallbackIsCalled < StandardError
end
Then the following test should pass:
describe FooBarJoin do
it "'s before_destroy callback should be called when it is called through Association's clear method" do
foo = Foo.create
bar = Bar.create
foo.bars << bar
#the next line should raise an error when it executes foobarjoin's before_destroy callback..
foo.bars.clear.should raise_error(FooBarJoinBeforeDestroyCallbackIsCalled)
end
end
The before_destroy callback should also be called when foo.update_attributes removes instances of FooBarJoin
The above code is included as a rails app.
Comments and changes to this ticket
-
Anil Wadghule April 23rd, 2010 @ 08:13 PM
Verified this issue. I not sure whether Rails supports calling callbacks on join model for association methods.
-
Santiago Pastorino February 2nd, 2011 @ 04:43 PM
- State changed from new to open
This issue has been automatically marked as stale because it has not been commented on for at least three months.
The resources of the Rails core team are limited, and so we are asking for your help. If you can still reproduce this error on the 3-0-stable branch or on master, please reply with all of the information you have about it and add "[state:open]" to your comment. This will reopen the ticket for review. Likewise, if you feel that this is a very important feature for Rails to include, please reply with your explanation so we can consider it.
Thank you for all your contributions, and we hope you will understand this step to focus our efforts where they are most helpful.
-
Santiago Pastorino February 2nd, 2011 @ 04:43 PM
- State changed from open to stale
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>