ما هي أفضل طريقة للتعامل مع اتصالات قاعدة البيانات لكل نموذج باستخدام ActiveRecord؟

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

سؤال

أريد الطريقة الأساسية للقيام بذلك.لقد أصبحت عمليات البحث التي قمت بها على Google قصيرة.لدي نموذج ActiveRecord واحد يجب تعيينه إلى قاعدة بيانات مختلفة عن بقية التطبيق.أرغب في تخزين التكوينات الجديدة في ملف data.yml أيضًا.

أدرك أنه يجب استدعاء Found_connection، لكن ليس من الواضح أين.إليك ما حصلت عليه حتى الآن، وهو لا يعمل:

class Foo < ActiveRecord::Base
    establish_connection(('foo_' + ENV['RAILS_ENV']).intern)
end
هل كانت مفيدة؟

المحلول

ومن الجيد أيضًا أن تقوم بتصنيف النموذج الخاص بك إلى فئة فرعية تستخدم قاعدة بيانات مختلفة، مثل:

class AnotherBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "anotherbase_#{RAILS_ENV}"
end

وفي النموذج الخاص بك

class Foo < AnotherBase
end

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

نصائح أخرى

هيه.كنت على حق!أكثر نظافة:

class Foo < ActiveRecord::Base
    establish_connection "foo_#{ENV['RAILS_ENV']}"
end

ملصق ممتاز في pragedave.pragprog.com.

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