Нет необходимости полностью усложнять ситуацию, запустив два приложения, просто чтобы иметь два типа базы данных.Похоже, вам нужно DataMapper .Он будет делать именно то, что вам нужно из коробки.Получите гем dm-rails для его интеграции с Rails.
В DataMapper, в отличие от ActiveRecord, вы должны предоставить все подробности о вашем базовом хранилище данных: какие поля у него есть, как они отображают атрибуты в ваших моделяхкакие имена таблиц (если они есть в базе данных), какой бэкэнд он использует и т. д. и т. д.
Прочитайте документацию ... есть куча кода, чтобы дать вам представление.
Каждая модель - это просто старый объект Ruby.Определение класса просто смешивается в DataMapper::Resource
, что дает вам доступ ко всем функциям DataMapper:
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :password_hash, String
property :created_at, DateTime
end
Однако вы имеете большой контроль.Например, я могу указать, что эта модель не хранится в моем хранилище данных по умолчанию (хранилище) и что оно хранится в одном из других настроенных хранилищ данных (которые могут быть хранилищем NoSQL, если хотите).
class User
include DataMapper::Resource
storage_names[:some_other_repo] = 'whatever'
# ... SNIP ...
end
В основном DM ведет себя как ActiveRecord на стероидах.Вы получаете все основы, такие как поиск записей (за исключением того, что вам никогда не придется использовать исходные имена полей, если ваша модель их абстрагирует):
new_users = User.all(:created_at.gte => 1.week.ago)
Вы получаете проверки, вы получаете наблюдателей, вы получаете совокупную обработку... затем получите кучу других вещей, таких как стратегическая загрузка (решает проблему n + 1 запросов), отложенная загрузка больших полей текста / больших двоичных объектов, поддержка нескольких репозиториев.Логика запросов намного лучше, чем AR, на мой взгляд.Просто прочитайте документы.Они дружелюбны к человеку.Не просто справка по API.
В чем недостаток?Ну, во многих драгоценных камнях не учитывается, что вы, возможно, не используете ActiveRecord, так что есть немного больше поиска, когда вам нужен драгоценный камень для чего-то.Однако со временем это станет лучше, поскольку до Rails 3.x бесшовная интеграция DM с Rails не была такой простой.