假设我有一个这样的模型:
create_table :ninjas do |t|
t.string name
end
Ninja课程有额外的属性:
class Ninja < ActiveRecord::Base
def honorific
"#{name}san"
end
end
在我的控制器中,我只想将其呈现为XML:
def show
render :xml => Ninja.find(params[:id])
end
敬意部分未呈现。这是有道理的,因为它只是一种方法,但有没有办法欺骗它?
我完全可以回答“你这样做完全错了。”我只想补充一点,我确实想要动态计算敬意,而不是像将它存储在数据库中那样。
答案 0 :(得分:2)
您可以使用:methods
参数to_xml
进行此序列化。您可以直接在行动中调用它......
render xml: Ninja.find(params[:id]).to_xml(methods: :honorific)
...或重新定义to_xml
课程中的Ninja
以始终包含该内容。
请查看the docs了解详情。