1
내가 이해할 수없는 것을 발견했습니다. 주어진 다음의 :ActiveRecord : has_many 관계의 개체 수
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.count }
Parent Load ...
Child Load ...
...
(0.2ms) SELECT COUNT(*) FROM "children" WHERE "children"."parent_id" = 46
...
를이 위의 자식을 쿼리에 포함하더라도 각 부모에 대한 쿼리가 생성됩니다.
>>> Parent.all(:include => :children).each { |parent| print parent.children.to_a.count }
그리고 아이들의 클래스를 가져 오는 경우는 "배열"나에게 알려주기 때문에 즉, 이상하다 :
>>> parent.children.class
Array
내가 체크하면 무엇을 수정하는 것은 내가 어린이 .to_a를 호출하는 경우입니다 "to_a"의 호출 후에 클래스는 다시 배열을가집니다.
>>> parent.children.to_a.class
Array
왜 수법이 다릅니 까?