在我的一些 Rails 应用程序中,我的 ActiveRecord 模型似乎在初始化时建立了数据库连接(例如,当我这样做时rails console
),而在其他一些连接中,似乎只有当我引用模型类或实例化模型对象时才建立连接。
例如,我只是去了一个应用程序,打开 Rails 控制台并写道:
SomeModel.connected?
它回来了false
。我去了另一个应用程序,输入了相同的命令(对于不同的型号),它返回了true
. 我去了第三个应用程序并输入了相同的命令。这一次,它等了一会儿又回来true
了,这让我觉得connected?
方法出于某种原因触发了连接。
这种行为差异似乎与 Rails 版本或模型的内容无关。这可能是我在初始化程序中所做的一些奇怪的事情,但我不这么认为。
那么 Rails 什么时候建立连接呢?或者预期的行为是什么?
附加信息
我要补充一点,它似乎不会connected?
返回 false,因为 Rails无法连接到数据库。
例如,在我的第一个应用程序中,我这样做:
SomeModel.connected?
# => false
SomeModel.table_exists? # or any other command that makes Rails look at db
# => true
SomeModel.connected?
# => true