2011-03-11 64 views
19

有什麼方法可以添加回調項目添加到habtm關係?Rails habtm回調

例如,我有以下兩種模式,UserRole

# 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回調函數,因爲連接表沒有模型(因爲它是一個真正的habtm)。

我知道我可以編寫一個像add_to_role(role)這樣的方法,並定義所有內容,但我更願意使用回調。這可能嗎?

回答

30

是的,有:

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

+0

它在其上關係的側面添加我的回調事,或者是一樣?? – zeacuss 2012-05-29 09:00:23

+0

我剛剛在Rails 3.2.8上試了一下,它很遺憾,在哪一邊添加了這些回調函數。你有什麼經驗? – 2012-09-27 13:27:56