2011-03-11 12 views
19

क्या किसी आइटम को habtm रिलेशनशिप में जोड़े जाने के लिए कॉलबैक जोड़ने का कोई तरीका है?रेल्स 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 कॉलबैक नहीं लगता है क्योंकि जॉइन टेबल के लिए कोई मॉडल नहीं है (क्योंकि यह एक सच्चा 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

+0

मैंने रेलवे 3.2.8 के साथ बस कोशिश की और यह दुख की बात है कि आप किस कॉलबैक को जोड़ते हैं। आपका अनुभव क्या है? –

संबंधित मुद्दे