Как сделать внешние вызовы базы данных?
Итак, я хотел бы добавить внешнюю базу данных в мой config/database.yml
Затем смоделировать одну таблицу из нее.
Возможно ли это? Я не смог понять, как это сделать.
"Подключение к нескольким базам данных в разных моделях
Связи обычно создаются с помощью ActiveRecord::Base.establish_connection
и извлекаются ActiveRecord::Base.connection
. Все классы, наследующие от ActiveRecord::Base
, будут использовать это соединение. Но вы также можете установить соединение, специфичное для класса. Например, если Course
является ActiveRecord::Base
, но находится в другой базе данных, вы можете просто сказать Course.establish_connection
и Course
, и все его подклассы будут использовать это соединение.
Эта функция реализуется путем сохранения пула соединений в ActiveRecord::Base
, который является индексом Hash, присвоенным классом. Если запрашивается соединение, метод retrieve_connection будет подниматься по иерархии классов до тех пор, пока соединение не будет найдено в пуле соединений. "
Ответы
Ответ 1
Сначала определите информацию о соединении в database.yml:
my_external_db:
adapter: mysql
username: ...
....
Затем создайте модель и подключите ее к внешнему db
class MyExternalModel < ActiveRecord::Base
establish_connection(:my_external_db)
set_table_name 'my_external_table'
end
Ответ 2
set_table_name
удаляется, поэтому вместо этого вы должны использовать: self.table_name