2008-09-12 14 views
6

में प्रति उपयोगकर्ता डेटाबेस कनेक्शन करने का सबसे अच्छा तरीका क्या है Rails में प्रति उपयोगकर्ता डेटाबेस कनेक्शन करने का सबसे अच्छा तरीका क्या है?रेल

मुझे एहसास है कि यह एक खराब रेल डिजाइन अभ्यास है, लेकिन हम धीरे-धीरे एक मौजूदा वेब एप्लिकेशन को प्रतिस्थापित कर रहे हैं जो प्रति उपयोगकर्ता एक डेटाबेस का उपयोग करता है। एक पूर्ण नवीनीकरण/पुनर्लेखन संभव नहीं है।

उत्तर

10

अपने एप्लिकेशन नियंत्रक में ऐसा कुछ डालें। मैं डेटाबेस का नाम चुनने के लिए सबडोमेन प्लस "_clientdb" का उपयोग कर रहा हूं। मेरे पास एक ही उपयोगकर्ता नाम और पासवर्ड का उपयोग कर सभी डेटाबेस हैं, इसलिए मैं इसे डीबी कॉन्फ़िगरेशन फ़ाइल से पकड़ सकता हूं।

आशा है कि इससे मदद मिलती है!

class ApplicationController < ActionController::Base 

    before_filter :hijack_db 

    def hijack_db 
    db_name = request.subdomains.first + "_clientdb" 

    # lets manually connect to the proper db 
    ActiveRecord::Base.establish_connection(
     :adapter => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['adapter'], 
     :host  => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['host'], 
     :username => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['username'], 
     :password => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['password'], 
     :database => db_name 
    ) 
    end 
end 
1

ActiveRecord::Base.establish_connection पर एक नज़र डालें। इस तरह आप एक अलग डेटाबेस सर्वर से कनेक्ट होते हैं। मैं बहुत अधिक सहायता नहीं कर सकता क्योंकि मुझे नहीं पता कि आप उपयोगकर्ता को कैसे पहचानते हैं या इसे अपने डेटाबेस में मैप करते हैं, लेकिन मुझे लगता है कि एक मास्टर डेटाबेस में वह जानकारी होगी (और कनेक्शन जानकारी डेटाबेस.आईएमएल फ़ाइल पर होनी चाहिए)।

शुभकामनाएं।