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)
, и определить все там, но я бы предпочел использовать обратный вызов. Возможно ли это?
Ответы
Ответ 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