Я использую DataMapper в проекте Rails и обнаружил, что вызов to_json
для экземпляра модели или коллекции приводит к странному поведению: либо ошибка циклической ссылки из JSON, либо бесконечная серия тот же запрос .
Предполагая, что это проблема с моими определениями модели, я открыл консоль Rails и создал простейшую модель:
class Foo
include DataMapper::Resource
property :id, Serial
property :name, String
end
Foo.auto_migrate! # create db table `foos` for this model
После сохранения экземпляра этой модели я сделал это:
f = Foo.first
f.to_json
В этот момент процесс зависает. Если я tail -f log/development.log
, я вижу, что этот запрос выполняется снова и снова:
SQL (0.084ms) SELECT `id`, `name` FROM `foos` ORDER BY `id`
Использование памяти Ruby продолжает расти, пока я не прерву команду или не убью процесс Ruby. Это та же проблема, что у меня была с моими фактическими моделями, поэтому я не думаю, что это было связано с неправильным определением модели.
Что вызывает это странное поведение?