Я отказался от своих дней, пытаясь выполнить эту простую вещь в Rails 3.1 без везения. У меня есть некоторые модели вложенных 2 уровня глубоки и связаны многие-к-одному с belongs_to/внешним ключом, как:Вложенные атрибуты в хэш-представление записи
TopLevelModel:
MiddleLevelModel:
BottomLevelModel
Я жадно загружая всю иерархию в моих запросах так:
@model = TopLevelModel.find(1, :include => {:middle_level_children => :bottom_level_children})
Сериализатор JSON отлично работает для сериализации вложенной иерархии (с использованием опции: include), но этого недостаточно для моих целей, и мне нужно (рубиновое) хэш-представление атрибутов записи. @model.attributes()
был бы совершенным, но он пренебрегает моими отношениями. Есть ли способ получить вложенное представление хэша с помощью этого метода (я внимательно прочитал документацию и не подозреваю об этом, но, возможно, есть какой-то экзотический вариант, о котором я не знаю). Чтобы было ясно, представление Ищу бы:
{
:attribute_1 => 'some attribute', #an attribute of top level model
#...
:middle_level_children: => [{ # type 'MiddleLevelModel'
:attr_1 => 'some attribute of middle level model',
# ...
:bottom_level_children => [{ #type 'BottomLevelModel'
:attr => 'some attribute of bottom level model'
}]
}]
}
Это кажется невероятно простой (и, я думаю, общий) нужен, но у меня не было никакой удачи.
Это будет мое временное решение, но я подумал, что для этого есть, возможно, более правильная, автоматическая/отражающая способность. –