Mam aplikację z wieloma domenami Rails 4, gdzie request.domain
żądania http określa, której funkcji udostępniam danemu gościowi.Jak zmienić bazę danych MongoDB w locie podczas korzystania z db.collection.insert()?
Każda domena w mojej aplikacji powinna być obsługiwana przez własną bazę danych MongoDB. Na przykład. domain1.com jest obsługiwana przez db_for_domain_1 itp
mogę przeczytać w MongoDB docs on runtime persistence że
Mongoid.override_database("db_for_#{request.domain}")
pozwala mi przełączyć bazę danych w locie.
Ale jak zachować trwałość, gdy omijam Mongoida i używam metody Mongo Shell db.collection.insert()? Nadal będę to robił z poziomu mojej aplikacji.
Odpowiedź może znajdować się w MongoDB docs on collection access, ale nie rozumiem tego. Więc jak mam przełączyć bazę przed/podczas tej operacji ?:
MyModel.collection.insert({field_1: "Value 1", field_2: "Value 2"})
Czy używasz tego samego modelu w bazach danych? – tegon
Tak, mam! Ja dokładnie te same modele. – ChristofferJoergensen
"... jak utrzymuję uporczywość ...": ODM nie może wiedzieć o operacjach wykonywanych poza tymi ramami. Po wstawieniu dokumentu za pomocą polecenia powłoki Mongo, uruchom odczyt tego dokumentu przez Mongoid, aby załadować go do warstwy trwałości. –