Глобальная переменная для соединения с базой данных в Rails - PullRequest
0 голосов
/ 14 июля 2010

Я использую Rails 3, и у меня есть несколько контроллеров, которые все делают что-то вроде следующего:

@db = Mongo::Connection.new.db(MONGOID_CONFIG['database'])

Я не хочу иметь несколько соединений с базой данных, так что естественноКазалось бы, нужно обернуть @db в какой-то синглтон, который инициализируется при запуске приложения.У меня вопрос: как это сделать?

Моей первой мыслью было использование помощника, но мне сказали, что они рекомендуются только для генерации элементов представления, и, очевидно, представления не должны иметь прямого доступа к базе данных.,Что еще там?Написать плагин?:)

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Если вы используете Mongoid (я полагаю, вы могли бы из-за того, что ваша константа называется MONGOID_CONFIG), вы можете использовать @db = Mongoid.master.connection, чтобы получить Mongo :: Connection, который подключен к главному серверу БД.

1 голос
/ 14 июля 2010

Прежде всего, вы можете написать помощника для размещения, например, в application_controller.rb, так что нет проблем с представлениями (ну, обычно помощник вида идет в app / helpers /).

в противном случае, вы можете написать следующую команду и поместить ее в config / initializers / mongo_db.rb:

$db = Mongo::Connection.new.db(MONGOID_CONFIG['database'])

файл будет загружен при загрузке, $ db представляет глобальную переменную, поэтомуон доступен для всего приложения (хотя и с представлениями), кстати, вы будете использовать его только в соответствующих местах, верно?; -Р

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...