gpt4 book ai didi

ruby-on-rails - .preload 使用两个数据库

转载 作者:行者123 更新时间:2023-12-05 00:13:53 26 4
gpt4 key购买 nike

我的 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 并通过 joinincludes 加载关联数据

但我认为 preload 应该仍然允许我使用两个查询(而不是 N + 1)加载数据

但是,当尝试在我的 Controller 中使用 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]

在我的 View 中使用一些帐户详细信息播放文档时,我可以做些什么来预加载帐户数据并避免 N + 1 次查询?

最佳答案

你看过公寓 gem 吗:https://github.com/bradrobertson/apartment

它为您提供了处理多个数据库的方法。

关于ruby-on-rails - .preload 使用两个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9757786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com