1
I 가능한 가장 솔직하지만 비효율적 인 방법으로 has_many
협회에 대한 XML을 반환하는 컨트롤러가 :생성 된 XML
@atoms = @molecule.atoms.find(:all, :include => :neutrons)
render :xml => @atoms.to_xml(:root => 'atoms')
이 반입 한 번에 모든 개체를 인스턴스화합니다. 이 메모리를 더 효율적으로 사용하려면 ActiveRecord의 일괄 찾기를 사용하고 싶습니다.
xml = '<atoms>'
@molecule.atoms.find_each(:include => :neutrons) do |atom|
xml << atom.to_xml
end
xml << '</atoms>'
render :xml => xml
이 확실히 더 많은 메모리를 효율적입니다하지만 확실히 덜 우아한 : 언뜻보기에,이 할 수있는 유일한 방법이 될 것으로 보인다. 기존 기능 중 일부는 Array#to_xml
과 중복됩니다.
손으로 XML을 작성하지 않고 find_each
의 힘을 활용할 수있는 방법이 있습니까?
아, 맞아. 나는 이것을 잊어 버렸다. 그러나 내 관심사는 건물을 어디에서 할 것인가 (이것이 가장 좋은 접근법 임)가 아니라 건물을 전혀 할 것인가하는 것입니다. 필자는'.to_xml'을 호출 할 수있는 자체 내장 된 특성을 선호하며'.find_each'를 사용하여 콜렉션의 XML을 생성 할 때 사용되는'.each'를 교체하는 방법을 찾는 것이 좋습니다. – Ian