2011-01-18 26 views
11

Bu yüzden config/database.yml'a bir dış veritabanı ekleyebilmek istiyorum.Rails harici veritabanı çağrıları nasıl yapılır?

Bu mümkün mü? Nasıl olduğunu anlayamadım.

farklı modeller

Bağlantılar genellikle ActiveRecord::Base.establish_connection yoluyla oluşturulan ve alınan ActiveRecord::Base.connection tarafından. ActiveRecord::Base devralan tüm sınıflar bu bağlantıyı kullanır. Ama aynı zamanda bir sınıfa özel bir bağlantı kurabilirsiniz edilir birden fazla veritabanlarına

"Bağlantı. Örneğin Course bir ActiveRecord::Base olduğunu, ancak farklı bir veritabanında bulunuyorsa, sadece Course.establish_connection ve Course ve alt sınıflarının her yerine bu bağlantıyı kullanır söyleyebiliriz.

Bu özellik uygulanan bir bağlantı tutarak ActiveRecord::Base numaralı havuzda, bu sınıf tarafından indekslenen bir Hash dosyasıdır. Bir bağlantı istenirse, bağlantı havuzunda bir bağlantı bulunana kadar retrieve_connection yöntemi sınıf hiyerarşisine gider. Yerine size, Sonra

my_external_db: 
    adapter: mysql 
    username: ... 
    .... 

modeli oluşturmak ve

class MyExternalModel < ActiveRecord::Base 
    establish_connection(:my_external_db) 
    set_table_name 'my_external_table' 
end 

cevap

16

Öncelikle database.yml bağlantı bilgileri tanımlamak kullanmanız gerekir: self.table_name

+0

Bağlantıyı daha sonra kapatmak zorunda mıyım? – Kirby

+1

@Kirby: Bunu yapmak isteyeceğinizi düşünmüyorum, aksi takdirde raylar Her istek için yeni bir bağlantı açın. Burada sadece sunucu bir kez açıldığında yapılır. – ryeguy

+0

Bunun için çok teşekkür ederim! raylarımı harici bir veritabanına bağlamak için kendimi deniyordum. çok yararlı. – Vicer

2

set_table_name kaldırılır dış db bağlayın, böylece: "

İlgili konular