Bağlanma Birden fazla veritabanı ile 3.1 Raylar
ShowNearby çok büyük bir göç PHP 3.1 RoR için yapmakta olduğumuz ve daha önce çözdük bazı olabilecek çeşitli sorunlarla karşı karşıyayız.
Veri büyük miktarda var ve biz ayrı ayrı işler için DBs içine bizim DB ayırma kararı aldık. Örneğin, bizim hesapları, yerler, günlükleri ve diğer birçok veritabanları ayrılır
Göçler, demirbaşlar, modelleri, güzel oynamak için almak gerekir, ve şimdiye kadar oldukça dağınık olmuştur. Kabul edilebilir bir çözüm için bizim bazı gereksinimler:
- bir model veritabanlarından birine bir tablo ile ilgilidir.
- rake db:damla - tüm veritabanı veritabanı belirtmek env düşmesi gerekir.yml
- rake db:create - tüm veritabanı veritabanı belirtmek env oluşturmanız gerekir.yml
- rake db:göç - çeşitli veritabanları için göçler çalışmalıdır
- rake db:test - demirbaşlar alıp/etc işlev/veritabanları ve test birimi çeşitli içine düşmesi gerekir
Her veritabanı başına ayrı raylar projeler ve ActiveResource ile bağlayarak düşünüyoruz, ama bu çok etkili değildir. Eğer herhangi benzer bir sorun daha önce yaşamış mıydık?
Çok teşekkürler!!
CEVAP
Wukerplank cevap için, ayrıca bağlantı veritabanı ayrıntıları koyabilirsiniz.öyle gibi: bir isim her zamanki gibi yml
log_database_production:
adapter: mysql
host: other_host
username: logmein
password: supersecret
database: logs
Özel model:
class AccessLog < ActiveRecord::Base
establish_connection "log_database_#{Rails.env}".to_sym
end
Uygulama kodunuzda olmaktan bu sinir bozucu kimlik bilgilerini tutmak için.
Düzenleme:İstiyorsanız yeniden bu bağlamda birden fazla modelleri, size gereken yeni bir soyut sınıf ve miras, çünkü bağlantıları sıkı eşleşmiş sınıfları (olarak açıkladı here, here here) ve yeni bağlantılar oluşturulur her sınıf için.
Eğer durum buysa, şey gibi yani Yukarı ayarlayın:
class LogDatabase < ActiveRecord::Base
self.abstract_class = true
establish_connection "log_database_#{Rails.env}".to_sym
end
class AccessLog < LogDatabase
end
class CheckoutLog < LogDatabase
end
Nasıl oluşturmak birden fazla Raylar a...
Burada birden fazla veritabanı motorla...
Bir SQLite veritabanı aynı anda birden...
Birden fazla özelliği ile find_or_crea...
Postgresql: daha iyi 1 şema, her bir y...