JSON包括语法

我的设置:Rails 2.3.10,Ruby 1.8.7

我在几个模型之间有一套相当复杂的关系。

class A has_many :classB has_many :classD end class B belongs_to :classA has_many :classC end class C belongs_to :classB belongs_to :classE end class D belongs_to :classA belongs_to :classE end class E has_many :classD has_many :classC end 

我遇到了JSON语法的问题,以获取以classA开头的所有相关信息。 这是我到目前为止所做的工作。

 classA.to_json(:include => {:classB => {:include => [:classC, :classE]}}) 

我无法使语法工作也包括classD和相关的classE记录。

更新实际上这样的东西可能会起作用,除了我不能混合哈希和数组

 classA.to_json(:include => [ :classB => { :include => { :classC => { :include => :classE } } }, :classD, :classE ]) 

请注意,我在上面的示例代码中没有使用单数/复数,但在我的实际代码中,我是。 任何见解将不胜感激。

谢谢,鲍勃

这应该工作:

 classA.to_json(:include => { :classB => {:include => {:classC => {:include => :classE}}}, :classD => {}, :classE => {}, }) 

我不知道你是否希望通过C类和classD包含classE,但这应该有效:

 classA.to_json(:include => { :classB => { :include => { :classC => { :include => :classE } } }, :classD => { :include => :classE } }) 

编辑:

 class A has_many :bs has_many :ds end class B belongs_to :a has_many :cs end class C belongs_to :b belongs_to :e end class D belongs_to :a belongs_to :e end class E has_many :ds has_many :cs end @class_a = A.first @class_a.to_json(:include => { :bs => { :include => { :cs => { :include => :e } } }, :ds => { :include => :e } }) 

试试这个,你应该只需要一个:include =>

 classA.to_json(:include => {:classB => [:classC, { :classE => :classD }] })