Сериализатор to_json
использует имя метода в качестве ключа для сериализации. Таким образом, вы не можете использовать опцию methods
для этого.
К сожалению, метод to_json
не имеет параметра t accept
block`, иначе вы могли бы сделать что-то похожее на
@obj.to_json(:except => :id) {|json| json.id = base62_id }
Так что это оставляет нас с безобразным хаком, таким как:
def to_json(options={})
oid, self.id = self.id, self.base62_id(self.id)
super
ensure
self.id = oid
end
Теперь to_json
вернет ожидаемый результат.