Oj ignores to_json methods defined on a class and encodes as it normally would without any to_json method being defined.
require 'json'
require 'oj'
class Klass
def self.to_json(*)
'correct_result'
end
end
puts JSON.dump(Klass)
puts Klass.to_json
puts Oj.dump(Klass)
puts Oj::Rails.encode(Klass)
This will output:
correct_result
correct_result
{"^c":"Klass"}
"Klass"