2010-09-29 12 views
26

मैं एक लेखा परीक्षक ऑब्जर्वर जो एक कार्रवाई कभी भी 3 मॉडल (किताबें, वर्ण, लेखक) के लिए after_create करता जोड़ना चाहते हैं के लिए एक पर्यवेक्षक को लागू करने में जानने के लिए की तलाश में ...रेल 3 ऑब्जर्वर - कैसे एक से अधिक मॉडल

मैंने हाल ही में पर्यवेक्षक क्षमता के बारे में सुना लेकिन क्षमता पर कोई दस्तावेज नहीं मिला। क्या यह रेल 3 में समर्थन करता है?

मैं ऑडिटर ऑब्जर्वर कैसे बना सकता हूं जो 3 मॉडल के बाद कुछ करता है?

धन्यवाद

+8

अपने आवेदन के इस लाइन के 25 को जोड़ने के लिए मत भूलना। आरबी 'config.active_record.observers =: auditor_observer' –

उत्तर

58

रेल observers मीठा कर रहे हैं, आप एक ही पर्यवेक्षक के भीतर observe अनेक मॉडल

पहले, आप अपने पर्यवेक्षक उत्पन्न करने के लिए की जरूरत है सकते हैं:, तब

rails g observer Auditor 

अपने ताजा में auditor_observer.rb फ़ाइल उन मॉडलों को परिभाषित करती है जिन्हें आप observe करना चाहते हैं और फिर after_create कॉलबैक जोड़ें।

class AuditorObserver < ActiveRecord::Observer 
    observe :model_foo, :model_bar, :model_baz 

    def after_create(record) 
    #do something with `record` 
    end 
end 

application.rb में जोड़ने

config.active_record.observers = :auditor_observer 

और यह काम करना चाहिए।

+0

अजीब, किसी कारण से यह काम नहीं कर रहा है। मैंने एक डीबगर लॉगर जोड़ा और कुछ भी लिखा नहीं जा रहा है। क्या पर्यवेक्षक को लात मारने के लिए कुछ और कदम आवश्यक है? – AnApprentice

+4

के बाहर निकलता है कि इसे "ActiveRecord :: पर्यवेक्षक" होना आवश्यक है और इसे config.rb फ़ाइल में कॉन्फ़िगर निर्देशिका में परिभाषित करने की आवश्यकता है। – AnApprentice

+0

हाँ आप सही हैं, जवाब संपादित कर रहे हैं। – jpemberthy

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