2011-01-18 12 views
11

Chciałbym móc dodać zewnętrzną bazę danych do mojego config/database.yml Następnie modeluj z niej jedną tabelę.jak wykonać zewnętrzne połączenia z bazami danych?

Czy to możliwe? Nie byłem w stanie dowiedzieć się, jak.

„Podłączenie do wielu baz danych w różnych modelach

Połączenia są zwykle tworzone przez ActiveRecord::Base.establish_connection i pobierane przez ActiveRecord::Base.connection. Wszystkie klasy dziedziczenie z ActiveRecord::Base użyje tego połączenia. Ale można też ustawić połączenie klasy specyficzne. Na przykład jeśli Course jest ActiveRecord::Base, ale mieszka w innej bazy danych, można po prostu powiedzieć Course.establish_connection i Course i wszystkich jej podklas użyje zamiast tego połączenia.

funkcja ta jest realizowana przez utrzymywanie połączenia pula w ActiveRecord::Base, która jest hasłem indeksowanym przez klasę. Jeśli żądane jest połączenie, metoda retrieve_connection będzie przechodzić w górę hierarchii klas do momentu znalezienia połączenia w puli połączeń. "

Odpowiedz

16

pierwsze, określić informacje o połączeniu w database.yml:

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

Następnie należy utworzyć model i podłączyć go do zewnętrznego db

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

czy muszę zamknąć połączenie? – Kirby

+1

@Kirby: Nie sądzę, że chciałbyś to zrobić, inaczej szyny będą musiały Otwórz nowe połączenie dla każdego żądania. Tutaj robi się to tylko raz, gdy serwer jest uruchamiany. – ryeguy

+0

Dziękuję bardzo za to! próbowałam połączyć moją aplikację railsową z zewnętrzną bazą danych. bardzo pomocne. – Vicer

2

set_table_name jest usuwany, więc zamiast tego, powinien użyć: self.table_name

Powiązane problemy