我的设置: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记录。
UPDATE 实际上这样的事情可能有用,除了我不能混合哈希和数组
classA.to_json(:include => [ :classB => { :include => { :classC => { :include => :classE } } },
:classD, :classE ])
请注意,我在上面的示例代码中没有使用单数/复数,但在我的实际代码中,我是。任何见解都将非常感激。
谢谢, 鲍勃
答案 0 :(得分:13)
这应该有效:
classA.to_json(:include => {
:classB => {:include => {:classC => {:include => :classE}}},
:classD => {},
:classE => {},
})
答案 1 :(得分:1)
我不知道您是否希望通过C类和C类包含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 } })
答案 2 :(得分:0)
试试这个,你应该只需要一个:include =>
:
classA.to_json(:include => {:classB => [:classC, { :classE => :classD }] })