Rails с двумя разными базами данных

Я использовал две разные базы данных для своего приложения Rails: MongoDB и MsSQL с использованием адаптера Mongoid и activerecord-sqlserver-adapter соответственно. Все хорошо, но возникла проблема при создании модели.

Проблема в том, "как я могу сгенерировать модель, которая по-разному относится к MongoDB или MsSQL?"

Например: я хочу сгенерировать модель People, связанную с моделью MongoID, и модель Animal с MsSQL. Пока я генерирую с помощью команды: rails g model Animal name:string, он генерирует модель, связанную с монгоидом. Как я могу сгенерировать модель Animal с помощью ActiveRecord, что означает, что она связана с MsSQL.
Пожалуйста, помогите мне. Спасибо


person Ganesh Kunwar    schedule 18.06.2013    source источник


Ответы (3)


Основываясь на использовании генераторов Active Record после установки Mongoid? я считаю, что это должно Работа:

rails g active_record:model Animal name:string
person pmoreira    schedule 18.06.2013
comment
пишет: Не удалось найти генератор activerecord:model. - person Ganesh Kunwar; 19.06.2013
comment
Извините, была опечатка: 'rails g active_record:model Animal name:string' должно работать - person pmoreira; 25.06.2013

Сначала позвольте мне просто проверить, правильно ли я понял ваш вопрос:

У вас есть 2 базы данных и ряд моделей/миграций, и вы хотите указать рельсам, какую базу данных использовать при выполнении миграции и доступе к базе данных с использованием вашей модели?

Если я не ошибаюсь, вам нужно добавить в свою миграцию метод, который переопределяет метод connection() по умолчанию в ActiveRecord::Migration.

def connection
  ActiveRecord::Base.establish_connection(:conn_name).connection
end

Где :conn_name — это имя, которое вы указали в настройках подключения в config/database.yml.

в ваших моделях добавьте строку

establish_connection :conn_name

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

person Chris Bailey    schedule 18.06.2013

Таким образом, быстрый и грязный способ, которым я справлялся с этим в прошлом (из-за того, что моя команда разработчиков хранила монгоид в файле гема по устаревшим причинам), заключается в том, чтобы закомментировать выходной монгоид, когда вам нужно выполнить миграцию, запустить пакет, сгенерировать и запустить вы выполняете миграцию, затем раскомментируете и снова запустите пакет. Это далеко не лучшая практика, но она должна работать.

person C dot StrifeVII    schedule 14.10.2016