У меня есть контроллер, который возвращает XML для has_many
ассоциации самым простым, но неэффективным способом:
@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
.
Есть ли способ использовать всю мощь find_each
, не создавая XML вручную?