2008-09-26 5 views
13

Chciałbym kanoniczny sposób to zrobić. Moje wyszukiwania w Google okazały się krótkie. Mam jeden model ActiveRecord, który powinien mapować do innej bazy danych niż reszta aplikacji. Chciałbym również zapisać nowe konfiguracje w pliku database.yml.Jak najlepiej obsługiwać połączenia z modelami baz danych za pomocą ActiveRecord?

Rozumiem, że należy ustanowić połączenie_włączenia, ale nie jest jasne, gdzie. Oto, co mam do tej pory, i to nie działa:

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

Odpowiedz

21

Ponadto, jest to dobry pomysł, aby podklasy modelu, który używa innej bazy danych, takich jak:

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

aw modelu

class Foo < AnotherBase 
end 

Jest to przydatne, gdy trzeba dodać kolejne modele, które uzyskują dostęp do tej samej, innej bazy danych.

5

Heh. Miałem rację! Bardziej czyściej:

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

Świetny wpis at pragedave.pragprog.com.

Powiązane problemy