to_xml with:only和:方法

我使用:only和:methods参数在ActiveRecord对象上调用to_xml。

我包含的方法返回AR对象的集合。 这样做没有:只有param,但是当添加它时我只得到我的对象的默认to_s表示。

#<Book:0x107753228>\n 

有任何想法吗?

更新,这是代码:

 class Author  :books, :only => :id) 

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的内部blob上省略了通常的 XML前导码。

XML序列化程序不会递归调用to_xml ,它只是假设来自:methods所有内容都是简单的标量数据,应该放入XML原始数据中。

在我的头脑中,我认为你可以这样做:

 Author.to_xml(:methods => {:books => {:only => :id}}) 

我在XML中包含AR关联时使用了类似的东西,但不太确定自定义方法。