Это моя User
модель и ее Subscription
:
# app/models/user.rb
class User < ActiveRecord::Base
has_many :subscriptions, :before_add => :cancel_subscriptions!
def cancel_subscriptions!(new_subscription=nil)
subscriptions.each(&:cancel!)
end
end
# app/models/subscription.rb
class Subscription < ActiveRecord::Base
belongs_to :user
end
Итак, когда я делаю some_user.subscriptions.create
, он выполняет обратный вызов :cancel_subscriptions!
, и тогда я счастлив. Но потом я делаю Subscription.create :user => some_user
обратный вызов, кажется, не вызывается, и мне грустно, очень, очень грустно.
Есть ли способ убедиться, что обратный вызов выполняется при создании Subscription
, связанного с User
?
PD: Мне бы очень не хотелось писать :before_create
в моей Subscription
модели, потому что я думаю, что отмена всех подписок должна быть User
обязанностью модели.