我试图了解ActiveRecord如何基于每个模型连接到数据库。所以假设我们有2个模型和一个数据库。当你在两个模型上做一个简单的Model.find
时,这会为每个模型创建一个新的数据库连接,因此它有自己定义的连接,或者是已经初始化的数据库的单个连接,它们在两个模型之间共享。有谁知道它在code?
我试图了解ActiveRecord如何实现这一目标。
答案 0 :(得分:2)
ActiveRecord
使用连接池。当您尝试与数据库交互时,将从池中获取连接,进行查询并在查询后将连接返回到池。所有这些都由ActiveRecord
在后台处理。
您可以在数据库配置中调整池中的连接数
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html
您可以轻松测试。在控制器操作中执行一个需要几分钟的查询。向操作发出多个请求,您将能够看到连接错误