覆盖Rails 3中所有对象的to_xml

时间:2011-03-17 22:14:43

标签: ruby-on-rails xml-serialization

想要覆盖我应用中所有内容的to_xml方法,并且遇到困难。

原因很简单,我需要摆脱:默认情况下的缩进格式。我听说过“这是一个视图”问题的论点,我应该在我需要它的模型中覆盖to_xml。

问题是我以编程方式返回此内容并且:skip_types set使我的回答不正确。当你有一个空数组时它们是不正确的,你最终得到: \ n 突然间,这是客户端读取的字符串值\ n(<<<<<<<<<<<<<<<<<<<<<<<<我也不喜欢在30个地方重写同样的事情。

那说,修复很简单,我似乎无法把它放在正确的位置。只是寻找帮助放在哪里。第二组眼睛也会受到赞赏。

我的解决方法是

alias __old_to_xml to_xml
def to_xml(options = {})
  options.merge!(:indent => 0)
  __old_to_xml(options) 
end 

1 个答案:

答案 0 :(得分:0)

我普遍同意其他人对这种方法的理解,但我认为你可以通过向配置/初始化程序添加一个文件来修补它:

module ActiveRecord::Serialization
  alias __old_to_xml to_xml
  def to_xml(opts={})
    __old_to_xml opts.merge(:indent => 0)
  end
end

如果您使用的是Rails 3,我相信您需要ActiveModel :: Serializers :: Xml而不是ActiveRecord :: Serialization,但不能保证。