Почему я получаю исключение циклической ссылки при вызове to_json в ActiveRecord :: Relation - PullRequest
2 голосов
/ 11 мая 2010

В Rails 3 (бета 3 на 1.8.7) при вызове to_json для отношения я получаю исключение циклической ссылки. Сначала преобразуйте это отношение в массив, и тогда вызов to_json работает.

Код, который не работает:

Model.where (). To_json (где модель - любая модель в вашем приложении на Rails 3)

Код, который работает:

Model.where (). To_a.to_json

Это можно воспроизвести на консоли.

Кто-нибудь еще сталкивался с этим? Это ожидается?

Ответы [ 2 ]

0 голосов
/ 01 июля 2010

Я тоже столкнулся с этим. Похоже, это было решено в этом коммите:

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

0 голосов
/ 29 мая 2010

У меня была та же проблема, я не мог ее исправить, но узнал, как ее избежать, со следующим:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...