Как сделать рельсы вызовов внешней базы данных? - PullRequest
11 голосов
/ 18 января 2011

Так что я хотел бы иметь возможность добавить внешнюю базу данных в мой config/database.yml Затем смоделировать одну таблицу из нее.

Возможно ли это? Я не смог понять, как.

"Подключение к нескольким базам данных в разных моделях

Соединения обычно создаются через ActiveRecord::Base.establish_connection и извлекаются ActiveRecord::Base.connection. Все классы, унаследованные от ActiveRecord::Base, будут использовать это соединение. Но вы также можете установить класс-специфическое соединение. Например, если Course является ActiveRecord::Base, но находится в другой базе данных, вы можете просто сказать Course.establish_connection и Course, и все его подклассы будут использовать вместо этого соединение.

Эта функция реализована путем сохранения пула соединений в ActiveRecord::Base, который является хешем, индексированным классом. Если запрашивается соединение, метод retrieve_connection будет подниматься по иерархии классов, пока соединение не будет найдено в пуле соединений. «

Ответы [ 2 ]

16 голосов
/ 18 января 2011

Сначала определите информацию о соединении в database.yml:

my_external_db:
  adapter: mysql
  username: ...
  ....

Затем создайте модель и подключите ее к внешнему БД

class MyExternalModel < ActiveRecord::Base
  establish_connection(:my_external_db)
  set_table_name 'my_external_table'
end
2 голосов
/ 20 июля 2015

set_table_name удалено, поэтому вместо этого следует использовать: self.table_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...