我正在开发一个应用程序,它使用ActiveRecord进行数据库访问,但不使用ORM功能,如模型类-查询都是用文字SQL和调用exec_query
。
我想使用support for multiple databases in ActiveRecord,以便有选择地选择使用到数据库的只读连接,但还没有能够解决如何在不使用模型类的应用程序中实现这一点。
使用模型类(来自文档),我可以声明如下:
class MyBaseModel < ActiveRecord::Base
self.abstract_class = true
connects_to database: { writing: :primary, reading: :primary_replica }
end
然后手动切换到阅读环境,例如使用:
ActiveRecord::Base.connected_to(role: :reading) do
SomeChildModel.find id
end
是否有一种方法可以声明用于阅读角色的数据库连接(除了用于编写的默认角色之外),然后能够选择在特定上下文中使用该角色(在连接对象上进行exec_query
调用),以便ActiveRecord能够在切换上下文时在后台正确管理连接池,就像上面配置的模型类一样?
1条答案
按热度按时间eh57zj3b1#
我认为你的问题包括你的答案。你可以在代码块中执行代码:
没有任何东西需要该块中的代码来引用类或模型。
更多来自docs:
在某些情况下,您可能希望应用程序连接到writer或副本,而自动连接切换是不够的。例如,您可能知道,对于特定的请求,您总是希望将请求发送到副本,即使您处于POST请求路径中也是如此。
为此,Rails提供了一个connected_to方法,该方法将切换到您需要的连接。
根据文档,您需要做的就是在
database.yml
文件中定义其他数据库。