У меня есть приложение с несколькими доменами Rails 4, где request.domain
http-запроса определяет, какую функциональность я предоставляю данному посетителю.Как сменить базу данных MongoDB на лету при использовании db.collection.insert()?
Каждый домен в моем приложении должен обслуживать его собственная база данных MongoDB. Например. domain1.com обслуживается db_for_domain_1 и т.д.
я могу читать в MongoDB docs on runtime persistence что
Mongoid.override_database("db_for_#{request.domain}")
позволяет мне переключаться базы данных на лету.
Но как сохранить сохранность, когда я обгоню Mongoid и использую метод mongo Shell db.collection.insert()? Я все равно сделаю это из моего приложения.
Ответ может быть в MongoDB docs on collection access, но я не понимаю. Так как же я переключаю базу данных перед/во время этой операции ?:
MyModel.collection.insert({field_1: "Value 1", field_2: "Value 2"})
Вы используете ту же модель для баз данных? – tegon
Да, да! У меня одни и те же модели. – ChristofferJoergensen
О «... как сохранить постоянство ...»: ODM не может знать об операциях, выполненных вне этой структуры. Когда вы вставляете документ через команду оболочки mongo, запускайте чтение этого документа через Mongoid, чтобы загрузить его в слой persistence. –