Вы хотите ActiveRecord :: Base # create_connection . Возможно, вы захотите использовать его в абстрактном подклассе, чтобы модели, использующие ручные соединения, не мешали использованию соединений остальной частью вашего приложения:
class LogBase < ActiveRecord::Base
self.abstract_class = true
end
class LogItem < LogBase
...
end
LogItem.establish_connection { ... }
LogItem.find_by_ ...
Если у вас когда-либо будет только одна модель, которая делает ручные соединения, абстрактный класс не нужен.
Знаете ли вы полный набор баз данных, к которым вы можете подключиться? Если так, то database.yml все еще может быть полезен для вас. Вы можете поместить всю информацию в качестве каталога, присвоив каждой базе данных имя, а затем динамически выбрать, какую из них установить в приложении, используя эти имена:
# database.yml
atlanta:
host: atlantadb.foo.com
# foo.rb
LogItem.establish_connection :atlanta
Настройка соединений может быть довольно тяжелой, вдвойне, если сайты разделены глобальной сетью. Я бы подумал, имеет ли смысл использовать метод извлечения-преобразования-загрузки и использовать почасовое / ежедневное задание cron для копирования данных на сайт централизованной отчетности. Это самая основная форма хранилища данных, и это очень распространенный подход. Если вы используете MySql, Maatkit Sync - это аккуратный маленький инструмент, такой как rsync для таблиц. В качестве альтернативы вы, вероятно, используете базу данных, которая поддерживает репликацию главный-подчиненный, хотя это может быть значительно сложнее в обслуживании.