У меня есть проект под управлением Rails 3.1.3 и JSON gem 1.6.3, и я не могу передать ни один экземпляр ActiveRecord в JSON.dump. Я всегда получаю следующую ошибку:
NoMethodError: undefined method `[]=' for #<JSON::Ext::Generator::State:0x000001033f2088>
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activerecord-3.1.3/lib/active_record/serialization.rb:10:in `serializable_hash'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activemodel-3.1.3/lib/active_model/serializers/json.rb:84:in `as_json'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activesupport-3.1.3/lib/active_support/json/encoding.rb:47:in `block in encode'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activesupport-3.1.3/lib/active_support/json/encoding.rb:78:in `check_for_circular_references'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activesupport-3.1.3/lib/active_support/json/encoding.rb:46:in `encode'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activesupport-3.1.3/lib/active_support/json/encoding.rb:31:in `encode'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/activesupport-3.1.3/lib/active_support/core_ext/object/to_json.rb:20:in `to_json'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/json-1.6.3/lib/json/common.rb:216:in `generate'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/json-1.6.3/lib/json/common.rb:216:in `generate'
from /Users/andy/.rvm/gems/ruby-1.9.2-p180@project/gems/json-1.6.3/lib/json/common.rb:380:in `dump'
Передача JSON.dump хеша, экземпляра класса, отличного от ActiveRecord, и т. Д. Работает нормально, и #to_json работает с моими экземплярами ActiveRecord. Вместо этого я не могу просто вызвать #to_json, так как на самом деле это библиотека, я передаю свой объект ActiveRecord, который вызывает JSON.dump. Однако, у меня та же проблема: пропустить эту другую библиотеку и просто вызвать сам JSON.dump.
Любая помощь очень ценится!