计算ActiveRecord中子对象数的最佳方法是什么

时间:2012-11-29 10:46:51

标签: ruby-on-rails activerecord

class Foo < ActiveRecord::Base {
   has_many :bars
}

foo = Foo.find(1)
foo.bars.count

这是计算条数的最佳方式还是有效的方法

2 个答案:

答案 0 :(得分:3)

如果你的模型完全正常化,那么这将是最有效的方法。

如果您需要做很多事情,可以将bars计数缓存在Foo表格上。

Railscast Episode 23涵盖了计数器缓存,此信息在当前Rails版本中仍然是正确的。

答案 1 :(得分:1)

是的,这是最有效的方式,因为ActiveRecord将其转换为适当的SELECT COUNT(*)SQL语句,这比加载所有记录数据并在数组中计算它们要高效得多。