ما هي أفضل طريقة لإجراء اتصالات قاعدة بيانات لكل مستخدم في ريلز؟

StackOverflow https://stackoverflow.com/questions/58755

  •  09-06-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة لإجراء اتصالات قاعدة بيانات لكل مستخدم في Rails?

أدرك أن هذه ممارسة سيئة في تصميم Rails، ولكننا نستبدل تدريجيًا تطبيق ويب موجود يستخدم قاعدة بيانات واحدة لكل مستخدم.إعادة التصميم/إعادة الكتابة الكاملة غير ممكنة.

هل كانت مفيدة؟

المحلول

ضع شيئًا كهذا في وحدة تحكم التطبيق لديك.أنا أستخدم النطاق الفرعي بالإضافة إلى "_clientdb" لاختيار اسم قاعدة البيانات.لدي جميع قواعد البيانات التي تستخدم نفس اسم المستخدم وكلمة المرور، لذا يمكنني الحصول عليها من ملف تكوين db.

أتمنى أن يساعدك هذا!

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

نصائح أخرى

نلقي نظرة على ActiveRecord::Base.found_connection.هذه هي الطريقة التي تتصل بها بخادم قاعدة بيانات مختلف.لا يمكنني تقديم المزيد من المساعدة لأنني لا أعرف كيفية التعرف على المستخدم أو تعيينه إلى قاعدة البيانات الخاصة به، ولكن أفترض أن قاعدة البيانات الرئيسية ستحتوي على تلك المعلومات (ويجب أن تكون معلومات الاتصال في ملف قاعدة البيانات.yml) ).

حظا سعيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top