代码之家  ›  专栏  ›  技术社区  ›  user24359

自定义Rails XML呈现以包含额外属性

  •  1
  • user24359  · 技术社区  · 14 年前

    假设我有一个这样的模型:

    create_table :ninjas do |t|
      t.string name
    end
    

    还有忍者类,还有一个额外的属性:

    class Ninja < ActiveRecord::Base
      def honorific
        "#{name}san"
      end
    end
    

    在我的控制器中,我只想将其呈现为XML:

    def show
      render :xml => Ninja.find(params[:id])
    end
    

    敬礼部分没有呈现。这是有道理的,因为这只是一种方法,但有没有欺骗的方法?

    我完全想知道“你这样做完全是错的。”我只想补充一句,我真的很想即时计算出敬语,而不是像存储在数据库之类的东西里。

    1 回复  |  直到 11 年前
        1
  •  2
  •   John Bachir    11 年前

    你可以使用 :methods 论证 to_xml 用于此序列化。你可以直接在你的行动中调用它…

    render xml: Ninja.find(params[:id]).to_xml(methods: :honorific)
    

    或重新定义 ToXML 在你 Ninja 类以始终包含它。

    看一看 the docs 更多信息。