2013-11-28 6 views
1

Существует 3 модели: Место, Кафе, Клуб; они связаны через полиморфные отношения (поле «детали» в поле «Место» и «место» в Cafe & Клубные модели). Итак, я хочу, чтобы сделать информацию о всех местах детали (т.е. с полями кафе & моделей Club) в формате JSON - для этого я переопределяю as_json метод:Как визуализировать json с отношениями

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

Он работает хорошо, теперь JSON визуализирует информацию всем места с ключом «детали». Теперь есть модель FoodType, и только Cafe подключается к этой модели через has_many; Я хочу отобразить все места с деталями и food_types для Cafe. Как мне это сделать? Я думал, что могу переопределить as_json для Cafe, и все будет хорошо:

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_json или as_json. Они там для определенной цели. Что делать, если вам нужен объект json в другом месте без этих отношений? Трудно решить, если вы уже переопределили as_json на определенный стиль.

Используйте все следующие камни: сериализаторы ActiveModel, rabl, jbuilder. Любой из них может легко обрабатывать ваш запрос.

Смежные вопросы