В Rails 2.3 вы можете использовать as_json
:
Вызов as_json
очень полезен в этой ситуации. Он может принимать атрибуты и возвращает хеш, хотя ключи немного странные, когда вы начинаете включать вложенные объекты. В частности, все ключи для текущего объекта являются строками, а ключ для дескриптора вложенного объекта является символом.
Итак, для вашего примера ваш звонок может выглядеть примерно так:
hash = @bookshelf.as_json(:include => {:author => {}, :books => {:include => :pages}})
И доступ к объекту hash
будет выглядеть примерно так:
hash["bookshelf_color"] #=> "White"
hash[:author]["name"] #=> "John Smith"
hash[:books][:pages]["format"] #=> "8.5 inches x 5.5 inches"
В Rails 3.0 вы можете использовать serializable_hash
:
Функциональность v2.3 as_json
перенесена в метод serializable_hash
. Он работает так же, как и выше (глядя на исходный код, вы можете сказать, что метод v2.3 as_json
был перемещен в метод v3.0 serializable_hash
).