render: json вызовет .to_json для объекта, если это не строка. Вы можете избежать этой проблемы, выполнив:
render :json => JSON.generate(obj)
Это будет напрямую передавать строку и, следовательно, избегать вызова to_json ActiveSupport.
Другой подход заключается в переопределении to_json для объекта, который вы сериализуете, поэтому в этом случае вы можете сделать что-то вроде:
class Foo < ActiveRecord::Base
def to_json(options = {})
JSON.generate(as_json)
end
end
И если вы используете ActiveModelSerializer, вы можете решить эту проблему, переопределив to_json в вашем сериализаторе:
# controller
respond_with foo, :serializer => MySerializer
# serializer
attributes :bar, :baz
def to_json(options = {})
JSON.generate(serializable_hash)
end