У меня есть такая модель
class Parent < ActiveRecord::Base
:has_many :kids
end
class Kid < ActiveRecord::Base
:has_many :grandkids
:belongs_to :parent
end
Я могу сгенерировать JSON следующим образом:
the_parent.to_json( :methods => [:kids] )
=> {"parent": {"kids": [{"kid": {"name" => "kid0" .... и так далее. Как раз то, что я хочу. Каждый объект выглядит как хеш с одним ключом - именем модели - а значение является хешем атрибута. Отлично.
Но у меня возникают проблемы, когда я пытаюсь сериализовать все дерево, например так:
the_parent.to_json( :include => { :kids => { :include => :grandkids } } )
=> {"parent": {"kids": [{"name" => "kid0" ...
в котором отсутствуют имена моделей в массиве "kids". То же самое происходит на следующем уровне с внуками. Я собираюсь проанализировать это где-то еще, и это поможет иметь определенность в отношении имени объекта (в отличие от использования соглашения с использованием имени отношения). Документы рекламируют это:
ActiveRecord::Base.include_root_in_json = true
На что я нашел, что это не имеет никакого эффекта. Я предполагаю, что другое поведение связано с различием между опциями: method и: include, но я не могу изменить синтаксис: method, чтобы получить нужную мне вложенность, и я не уверен, будет ли это работать если он компилируется.
Есть идеи? Спасибо, Дэн