Одна модель Rails с двумя вариантами базы данных, выбранными при создании экземпляра

Мое приложение Rails (назовем его «Mira») будет взаимодействовать с существующим приложением (назовем его «Jira»). Mira будет хранить информацию о Jira и сможет напрямую манипулировать ее базой данных (потому что у Jira, скажем, неполный API).

Поскольку я хочу напрямую манипулировать базой данных Jira, имеет смысл иметь модели, представляющие каждую из таблиц Jira в моем приложении Mira. Таким образом, я могу использовать ActiveRecord для управления им.

Но на самом деле! Есть две джиры. Промежуточный экземпляр и производственный экземпляр.

Итак, теперь я хочу, чтобы моя модель, которая успешно взаимодействовала с одним экземпляром Jira, могла использовать другую базу данных.

Было бы очень мило, если бы я мог сделать это при создании экземпляра моей модели, возможно, так:

Jira::CustomField.new(:staging)

или что-то вроде того.

Мысли? Лучшие способы сделать это? Возможна ли моя цель, как заявлено?


person chadoh    schedule 15.04.2011    source источник


Ответы (1)


Как указано в документации для ActiveRecord::Base, легко иметь разные Объекты модели Rails подключаются к разным базам данных с помощью метода establish_connection.

Однако, если вы хотите, чтобы один и тот же класс подключался к нескольким базам данных на основе конфигурации, это будет проблемой. Вам нужно использовать ActiveRecord здесь или вы могли бы использовать DataMapper? Я думаю, что в этом сценарии это сработает лучше. Проверьте Какую ORM использовать в одном обрабатывать несколько подключений к БД приложение Sinatra? для примера

person Rob Di Marco    schedule 15.04.2011