Rails JSON с использованием RABL, показывая родительский атрибут?

У меня есть следующий файл RABL в моем приложении Rails 3.2:

collection @results.limit(5)

attributes :date, :client_id

child :client do
  attributes :Surname
end

child :animal do
  attributes :AnimalName
end

Я хотел бы добавить имя пользователя, которому принадлежит результат. Все, что я прочитал в документации RABL, похоже, предполагает, что доступны только child и node.

Как я могу получить атрибут родителей в приведенном выше коде? Очевидно, что простое выполнение следующих действий возвращает NULL!

child :animal do
  attributes :AnimalName
end

Это возможно?

Текущий вывод JSON:

{
date: "2013-06-25T19:36:11+01:00",
client_id: 88172,
client: {
Surname: "Strange"
},
animal: {
AnimalName: "Ria"
}
},

Желаемый результат:

{
date: "2013-06-25T19:36:11+01:00",
client_id: 882372,
client: {
Surname: "Summer"
},
animal: {
AnimalName: "Ria"
},
user: {
UserName: "Danny"
}
},

person dannymcc    schedule 26.06.2013    source источник


Ответы (1)


Вы можете добавить пользовательский узел, который добавляет пользовательские данные:

collection @results.limit(5)

attributes :date, :client_id

node :user do |report|
  partial('users/show', :object => report.user)
end

Предполагается, что вам нужен весь шаблон пользователя/шоу.

Если вам просто нужен ключ/значение имени:

node :user do |report|
 { :name => report.user.name }
end
person jstim    schedule 26.06.2013
comment
Спасибо за предложения, я добавил в свой вопрос ожидаемый JSON. - person dannymcc; 26.06.2013
comment
В настоящее время я пробую метод Add user as child, я добавил файл show.json.rabl среди пользователей и добавил ваш пример кода. Он просто возвращает null. Я не могу понять это! - person dannymcc; 26.06.2013
comment
Похоже, что опция extends предназначена только для шаблонов наборов атрибутов, но не содержит никаких данных. results.json просто возвращает user: null. - person dannymcc; 26.06.2013
comment
у вас есть настроенный шаблон rabl для пользователей/show.rabl? если нет, вы можете создать его или просто указать атрибуты для пользователя непосредственно в этом шаблоне. что extends yadda аналогичен частичному рендерингу в обычном представлении рельсов, но вам нужен другой доступный шаблон. - person jstim; 27.06.2013
comment
чтобы уточнить, есть ли между вашими моделями результатов и пользователями отношения ActiveRecord? belongs_to :user - person jstim; 27.06.2013
comment
Да, я добавил пользователя/show.rabl и добавил параметры атрибута. У меня тоже отношения налажены. - person dannymcc; 27.06.2013