为什么在ActiveRecord :: Relation上调用to_json时会出现循环引用异常

时间:2010-05-10 22:45:26

标签: ruby-on-rails ruby-on-rails-3

在Rails 3(1.8.7版的beta 3)中,当在关系上调用to_json时,我得到一个循环引用异常。首先将该关系转换为数组,然后调用to_json。

失败的代码:

Model.where()。to_json(其中model是Rails 3应用程序中的任何模型)

有效的代码:

Model.where()。to_a.to_json

这可以在控制台上重新编写。

有没有其他人参与其中?这是预期的吗?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,无法修复它,但发现了如何避免它,具体如下:

respond_to do |format|
  response = @product.to_xml
  format.xml  { render :xml  => response }
  format.json { render :json => Hash.from_xml( response ).to_json }
end

这里的想法是生成响应的XML格式,然后哈希,然后将其格式化为JSON。

这种方法给了我超出预期的效果,因为现在JSON格式的结果与XML格式的结果完全相同。

答案 1 :(得分:0)

我也碰到了这个。看起来它已在此提交中得到解决:

http://github.com/rails/rails/commit/eb04408a20628a49296e0859425940b39a83ec63