2008-09-26 3 views
13

Ich möchte den kanonischen Weg, dies zu tun. Meine Google-Suchanfragen sind zu kurz gekommen. Ich habe ein ActiveRecord-Modell, das einer anderen Datenbank als der Rest der Anwendung zugeordnet werden sollte. Ich möchte die neuen Konfigurationen auch in der Datei database.yml speichern.Wie pro-Model Datenbankverbindungen mit ActiveRecord am besten zu behandeln?

Ich verstehe, dass Einrichtung_connection sollte aufgerufen werden, aber es ist nicht klar, wo. Hier ist, was ich bis jetzt, und es funktioniert nicht:

class Foo < ActiveRecord::Base 
    establish_connection(('foo_' + ENV['RAILS_ENV']).intern) 
end 

Antwort

21

Auch ist es eine gute Idee, Ihr Modell zu Unterklasse, die verschiedene Datenbank verwendet, wie zum Beispiel:

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

Und in Ihrem Modell

class Foo < AnotherBase 
end 

Es ist nützlich, wenn Sie nachfolgende hinzufügen müssen Modelle, die auf dieselbe, eine andere Datenbank zugreifen.

5

Heh. Ich lag richtig! Mehr sauber:

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

Toller Beitrag at pragedave.pragprog.com.

Verwandte Themen