【发布时间】:2018-05-30 02:06:56
【问题描述】:
我想做的是计算数据库中的所有对象。我从这样的事情开始:
p ["TOTAL COUNT", ApplicationRecord.subclasses.sum(&:count)]
但在实验中我发现...
[5] pry(main)> ApplicationRecord.subclasses.count => 6
我期望的回报远不止于此。我可以检查子类并发现缺少一些子类。
然后我发现....
[8] pry(main)> ActiveRecord::Base.descendants.count => 10
又增加了一些。再次,我可以单独检查它们,我注意到有一些丢失了。这是一个缺少的示例...
class MerchantsPrincipal < ApplicationRecord
end
class Principal < MerchantsPrincipal
end
我如何确保这些也包括在内?
【问题讨论】:
-
对不起,你为什么需要这个?也许如果您描述完整的业务案例,它有助于通过正常的解决方案来解决它。因为你的问题有点奇怪。
-
另外,你所说的“所有对象”是什么意思?数据库中所有表中的所有域(AR 类)或所有行(所有 AR 实例)?
-
@MaxVinogradov 我正在查找表中的所有 AR 实例或行。我有一个绝对一团糟的黄瓜套件,我怀疑它非常慢,因为使用的工厂创建的对象比必要的多。我想找到对象创建的最严重违规者,看看我是否可以先修复这些测试。这有意义吗?
-
而且,我不知道你有什么测试,但也许模拟 db 记录实体是合理的?
-
请注意,
MerchantsPrincipal.count已经包含Principal.count,因为 STI 的工作原理,所以descendants不是您要查找的内容。
标签: ruby-on-rails database postgresql activerecord