Приложение My Rails 3.2 использует две разные базы данных. Основной ОСОМ является MySQL, а Прочая принадлежностей является SQLServer DB:.preload с использованием двух баз данных
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 запросов, когда dusplaying Документы с некоторыми Учет Подробности на моих взглядах?
Ум ... ну, это не обязательно то, что Rails предназначено для этого. Конечно, это возможно, но, скорее всего, для того, чтобы использовать магию AR, вы хотите, чтобы это выглядело так, как только вы попадаете в Rails. Проверьте, есть ли там драгоценные камни, которые предназначены для этого. Вот более старый поток на SO с хорошими ссылками: http://stackoverflow.com/questions/1825844/multiple-databases-in-rails –
Я знаю, что Rails не предназначен для обработки нескольких баз данных. Использование 'creation_connection', когда требуется в моих моделях, достаточно для большинства моих потребностей. Я просто хотел бы улучшить производительность, используя энергичную/предварительную загрузку. – LapinLove404