我有这样的模型
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] )
=&GT; {“parent”:{“kids”:[{“kid”:{“name”=&gt; “kid0” ....等等。正是我想要的。每个对象看起来像一个带有单个键的哈希 - 这是模型名称 - 并且值是属性哈希。大。
但是当我尝试序列化整个树时遇到麻烦,就像这样:
the_parent.to_json( :include => { :kids => { :include => :grandkids } } )
=&GT; {“parent”:{“kids”:[{“name”=&gt; “kid0” ...... 缺少“kids”数组中的模型名称。同样的事情发生在与孙子孙女的下一个级别。我将在其他地方解析它,这将有助于确定对象名称(而不是依赖于使用关系名称的约定)。文档宣传了这一点:
ActiveRecord::Base.include_root_in_json = true
我发现它没有效果。我的猜测是不同的行为与:method和:include选项之间的区别有关,但是我不能纠缠:method语法来获得我需要的嵌套,而且我不确定它是否会起作用如果它编译。</ p>
有什么想法吗?谢谢,丹
答案 0 :(得分:1)
作为一种解决方法,我在我的模型中重写to_json:
def to_json(args)
super( :methods => [:kids] )
end