2013-06-18 12 views
5

Użyłem dwóch różnych baz danych dla mojej aplikacji Rails MongoDB i MsSQL korzystających Mongoid i activerecord-sqlserver-adapter adapter odpowiednio. Wszystko działa dobrze, ale pojawia się problem podczas generowania Modelu.Szyny z dwóch różnych baz danych

Problem polega na tym, "w jaki sposób mogę inaczej wygenerować model, który odnosi się do MongoDB lub MsSQL?"

Na przykład: Chcę, aby wygenerować People modelu dotyczy MongoID i Animal modelu MsSQL. Podczas generowania polecenia: rails g model Animal name:string generuje model związany z mongoidem. W jaki sposób mogę wygenerować model Animal z ActiveRecord, który oznacza związany z MsSQL.
Proszę, pomóż mi. Dzięki

Odpowiedz

1

Najpierw niech mi tylko sprawdzić, czy mam rozumieć swoje pytanie poprawnie:

masz 2 baz danych oraz serię modeli/migracje, a chcesz sposób powiedzieć szynach, które bazy danych, aby używać podczas pracy migracja i dostęp do bazy danych za pomocą Twojego modelu?

Jeśli znajduję się w prawym obszarze, musisz dodać metodę do migracji, która zastępuje domyślną metodę connection() w ActiveRecord::Migration.

def connection 
    ActiveRecord::Base.establish_connection(:conn_name).connection 
end 

Gdzie :conn_name to nazwa daliście ustawienia połączenia w config/database.yml

ciągu modeli dodać linię

establish_connection :conn_name 

na górze pliku modelu i modelu będzie teraz wiedział, do którego bazy danych się podłączyć.

0

Tak szybki i brudny sposób, że mam obchodzić to w przeszłości (z powodu mojego zespołu dev utrzymując mongoid w pliku gem z przyczyn starszych) to skomentować out mongoid kiedy musisz zrobić migracje uruchomić pakiet, wygenerować i uruchomić migrację, a następnie odkomentować i uruchomić pakiet ponownie. Jest to dalekie od najlepszych praktyk, ale powinno działać.

Powiązane problemy