ActiveRecord:中对象的计数有很多关系

ActiveRecord:中对象的计数有很多关系,activerecord,count,has-many,relation,Activerecord,Count,Has Many,Relation,我注意到一些我无法理解的事情。鉴于以下情况: class Parent < ActiveRecord::Base has_many :children end Class Child < ActiveRecord::Base belongs_to :parent end 它将为每个父对象生成一个查询,即使我在查询中包含了上面提到的子对象。如果我给孩子们打电话,有什么好办法: >>> Parent.all(:include => :children)

我注意到一些我无法理解的事情。鉴于以下情况:

class Parent < ActiveRecord::Base
  has_many :children
end

Class Child < ActiveRecord::Base
  belongs_to :parent
end
它将为每个父对象生成一个查询,即使我在查询中包含了上面提到的子对象。如果我给孩子们打电话,有什么好办法:

>>> Parent.all(:include => :children).each { |parent| print parent.children.to_a.count }
这是很奇怪的,因为如果我取孩子的类,它会告诉我“Array”:

如果我在调用“to_a”之后检查类,我又会得到一个数组

>>> parent.children.to_a.class
Array

为什么计数的行为如此不同?

试试.size而不是.count。ActiveRecord进行SQL计数,而不是确定它已获取的集合的大小

尝试.size而不是.count。ActiveRecord进行SQL计数,而不是确定它已获取的集合的大小

>>> parent.children.class
Array
>>> parent.children.to_a.class
Array