ActiveRecord嵌套关联多对一

时间:2013-11-03 11:16:12

标签: ruby activerecord

我有一个这样的架构...

class Foo < ActiveRecord::Base
    has_many :bars
end

class Bar < ActiveRecord::Base
    belongs_to :foo
    belongs_to :bar
end

class Baz < ActiveRecord::Base
    has_many :bars
end

我正在尝试将所有三个对象嵌套并在JSON中分解,因此我有以下代码...

foo = Foo.first
foo.to_json(:include => {:bars => :baz})

但我得到以下例外......

无法克隆Symbol file:try.rb location:clone line:36

我想让所有嵌套的条形图和所有baz嵌套的条形图都得到Foo。这可能吗?

我希望我保持抽象示例的尝试是有道理的:)

2 个答案:

答案 0 :(得分:1)

我认为在to_json方法上嵌套模型的正确方法如下:

foo.to_json(:include => { :bars => { :include => { :baz } } }

根据to_json的api 方法。

我希望它有所帮助:)

答案 1 :(得分:0)

我从控制器方法渲染json时得到了相同的“无法克隆符号文件”错误。像这样避免它:

render :json => @team.to_json( :include => [:members] )