AFAIK, вы должны обрабатывать дочерние объекты вручную:
a = Author.find_by_whatever
xml_string = a.to_xml(:only => :id) { |xml|
a.books.to_xml(:builder => xml, :skip_instruct => true)
}
Флаг :skip_instruct
указывает сборщику обойти обычную <?xml version="1.0" encoding="UTF-8"?>
преамбулу XML на внутреннем двоичном объекте XML.
XML-сериализатор не будет рекурсивно вызывать to_xml
, он просто предполагает, что все, начиная с :methods
, представляет собой простые скалярные данные, которые должны быть вставлены в необработанный XML-код.