Подтвердить что ты не робот

Rails habtm callbacks

Есть ли способ добавить обратные вызовы, когда элемент добавляется к отношениям habtm?

Например, у меня есть две следующие модели: User и Role:

# user.rb
class User; has_and_belongs_to_many :roles; end

 

# role.rb
class Role; has_and_belongs_to_many :users; end

Я хочу добавить обратный вызов к методу << (@user << @role), но я не могу найти обратный вызов ActiveRecord, потому что нет модели для таблицы join (потому что это истинный habtm).

Я знаю, что я мог написать такой метод, как add_to_role(role), и определить все там, но я бы предпочел использовать обратный вызов. Возможно ли это?

4b9b3361

Ответ 1

Да, есть:

class User < AR::Base
  has_and_belongs_to_many :roles, 
    :after_add => :tweet_promotion, 
    :after_remove => :drink_self_stupid

private

  def tweet_promotion
    # ...
  end

  def drink_self_stupid
    # ...
  end
end

Ищите "обратные вызовы ассоциации" на этой странице для получения дополнительной информации: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html