为什么 'ApplicationRecord.descendants.count' 即使有很多 ApplicationRecord 的后代(继承模型)也给出 1?

Why 'ApplicationRecord.descendants.count' gives 1 even there are many descendants (inheriting models) of ApplicationRecord?

我 运行 在 rails 控制台中使用以下代码:

ApplicationRecord.descendants.count # 1 = this gave only 1

甚至 rails 5.1.3.

中也有很多子 classes 继承自 "ApplicationRecord" class insde project_root/app/models/

这是因为您的模型没有加载。它们在第一次调用时由 Rails autoloader 加载。

例如,如果您有一个用户模型:

> ApplicationRecord.descendants.count
=> 1

> User.count # You can also run User.last or something different 
=> 144 # The result doesn't mind

> ApplicationRecord.descendants.count
=> 2 # It can be a different number but it will be bigger