Получение данных из внешней базы в Rails

247
26 ноября 2016, 20:18

Мне необходимо получить/обновить/удалить данные во внешней базе, никак не относящийся к базе самого приложения. Необходимо к ней обращаться из кода. Подскажите, где это все оформить, инициализация подключения, CRUD операции. Предполагаю, что в модели. Может есть какой-то пример, как лучше всего это написать?

Answer 1

Есть несколько возможных решений.

На уровне ActiveRecord

Можно выдумать ключ, под которым будут храниться реквизиты удалённой базы данных, например, external, и внести их в database.yml:

external:
  adapter: mysql
  host: example.com
  ...

...а в модели указать ActiveRecord обращаться именно к той базе:

class Model < ActiveRecord::Base
  establish_connection :external
end

...а можно указать реквизиты прямо в аргументах establish_connection хэшмапом, но хранить их лучше в файле конфигурации на ваш выбор. database.yml, если вы его не коммитите, неплохой выбор. И вообще, вот документация к establish_connection.

На уровне MySQL

MySQL имеет движок хранения FEDERATED, который делегирует хранение данных другому MySQL-серверу. Сначала этот движок необходимо включить на уровне сервера БД, а затем создать таблицу-отражение прямо в базе приложения.

Rails даже не нужно будет знать о том, что данные на самом деле где-то далеко.

READ ALSO
MySQL: GROUP BY устовия для COUNT(*)

MySQL: GROUP BY устовия для COUNT(*)

Как задать максимальный и минимальный размеры группы, чтобы получить записи, где count < 5 и count > 2?

311
Условие IF в триггере

Условие IF в триггере

Я вставляю данные в таблицу:

266
Ошибка 1142 при вставке данных в таблицу MySQL

Ошибка 1142 при вставке данных в таблицу MySQL

При выполнении вставки данных в таблицу я получаю ошибку:

432
Не проходит проверка столбца php/бд [закрыто]

Не проходит проверка столбца php/бд [закрыто]

Warning 1: mysql_query() expects parameter 1 to be string

237