在我的Item控制器中,我希望在將模型對象呈現爲JSON之前向其添加瞬態(即非持久)屬性。Ruby on Rails:爲JSON添加瞬態屬性到對象的問題Serializaton
def show
@item = Item.find(params[:id])
@item.comment = "some comment"
render :json => @item
end
我Item類看起來是這樣的:
class Item < ActiveRecord::Base
attr_accessor :comment
@comment
末
我的問題是,註釋實例變量沒有被在JSON呈現。在JSON輸出中顯示持久性的所有內容。我是否需要重寫to_json方法才能使其工作?還是有更簡單的方法來確保評論在JSON輸出中呈現?
感謝您的幫助。
--------------更新
這是一個已經發展了藏袍建議的解決方案。重寫to_json方法Item:
def to_json(options = {})
options[:methods] = :comment;
super(options)
end
想知道這是否與您的想法一致,Chubas。
看到這個類似的帖子http://stackoverflow.com/questions/2572284/override-to-json-in-rails-2-3-5/2574900 – Chubas 2010-08-25 16:20:08
又見......「你一般要單獨留下to_json,所以你需要做的就是添加你自己的as_json實現,就像這樣...「http://stackoverflow.com/questions/6892044/add-virtual-attribute-to-json-output – msanjay 2012-12-20 15:44:03