2013-11-28 34 views
1

有3個模型:Place,Cafe,Club;他們通過polymorhic關係(咖啡廳&俱樂部模型中的'地點模型'和'地點'字段中的'細節'字段)相關聯。所以,我想使所有地方的細節(即與咖啡&俱樂部模式的領域)的JSON信息 - 爲此,我將覆蓋as_json方法:如何呈現與關係的json

def as_json(options={}) 
    super(options.merge(include: :details)) 
    end 

它的工作好,現在JSON所有呈現的信息帶有'詳情'鍵的地方。現在有FoodType模型,只有咖啡廳通過has_many連接到這個模型;我想爲咖啡館渲染所有具有細節和food_types的地方。我該怎麼做?我以爲我可以覆蓋咖啡館as_json和一切都會很好:

def as_json(options={}) 
    super(options.merge(include: [:food_types])) 
    end 

但它沒有奏效。請告訴我,我該怎麼做?謝謝。

+0

請查看http://www.tigraine.at/2011/11/17/rails-to_json-nested-includes-and-methods。它有很多很好的例子可以幫助你。 –

回答

0

請不要覆蓋to_jsonas_json。他們在那裏是爲了一個目的。如果你在沒有這些關係的地方需要對象的json呢?如果您已將as_json重寫爲某種風格,則很難解決。

使用任何以下寶石:ActiveModel Serializers,rabl,jbuilder。他們中的任何一個都可以輕鬆處理您的要求。