Rails 2.3.8. I have 3 models, User, Source, and Subscription.
User attr_accessible :source_ids
has_many :subscriptions
has_many :sources, :through => :subscriptions
Source has_many :subscriptions
Subscription belongs_to :user
belongs_to :source
I have an interface that allows a User to edit their Subscriptions to a Source. It collects source_ids, and creates or deletes a Subscription based on the collection. The problem I am having is, quote:
"Automatic deletion of join models is direct, no destroy callbacks are triggered."
The Subscriptions are being deleted, not destroyed. I have a callback in the Subscription model that is not triggered:
before_destroy do |subscription|
[Some irrelevant object not to be mentioned].destroy
end
My question is, how can I trigger this callback when a Subscription is automatically deleted due to the join model?
Replying to your reply in HMT collection_singular_ids= deletion of join models is direct, no destroy callbacks are triggered
Change this line:
has_many :users, :through => :memberships
To this:
has_many :users, :through => :memberships, :after_remove => :your_custom_method
And define protected your_custom_method in User model. This way when a user removes a Subscription to some Source, this method gets called.
Good luck!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With