Приложение My Rails 3.2 использует две разные базы данных. Основная операционная система - MySQL, а другая - БД sqlserver:
development:
adapter: mysql2
encoding: utf8
database: mydb
username: myuser
password: ***
secondbase:
adapter: sqlserver
database: anotherbase
username: anotheruser
password: ***
У меня есть две связанные модели:
class Account < ActiveRecord::Base
establish_connection :secondbase
has_many :docs
end
class Docs < ActiveRecord::Base
belongs_to :account
end
Поскольку две модели используют таблицу для двух разных баз данных, я полагаю, что я не могу использовать eager_loading и загружать связанные данные с join
или includes
Но я думаю, что preload
все равно должен позволять мне загружать данные, используя два запроса (вместо N + 1)
Однако при попытке использовать preload
в моем контроллере возникает ошибка:
Docs.where(someconditions).preload(:account)
возвращает
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE [anotherbase]
Что я могу сделать, чтобы предварительно загрузить данные учетной записи и избежать запросов N + 1 при воспроизведении Документов с некоторыми учетными записями подробностями в моих представлениях?