Я использую PostGIS ActiveRecord Adapter
в приложении Rails API. У меня есть таблица БД с именем events
, где один из столбцов является столбцом геометрии PostGIS с именем coordinates
, например:
create_table 'events' do |t|
t.geometry 'coordinates;
end
Когда пользователь запрашивает мой API, я использую Netflix's Fast JSON API
для сериализации своего ответа:
class EventSerializer
include FastJsonapi::ObjectSerializer
attribute :coordinates do |object|
# coincidentally my column name and PostGIS Adapters method for getting the coordinates is the same
object.coordinates.coordinates
end
end
В большинстве случаев вышеприведенное работает, и я получаю ответ с координатами, но время от времени я получаю следующую ошибку:
'undefined method coordinates for "0101000020E610000061C3D32B65965DC03657CD7344F64040" String, did you mean codepoints'
выше случается время от времени, и я не могу воссоздать его, поскольку в большинстве случаев все работает нормальноИ хорошо, я имею в виду, что у меня есть только 5 записей в базе данных, и если выполнить ту же функцию, которая в конечном итоге сериализует 5 записей, это будет работать 50 раз, но затем 1 раз это даст мне ошибку выше и будет продолжать давать мне ошибку выше впоследующие звонки. Затем я перезагружаю сервер и все возвращается на круги своя.
Мое лучшее предположение заключается в том, что сериализатор обрабатывает объект быстрее, чем адаптер анализирует объект RGeo, чтобы вернуть координаты, но я не уверен, как это исправить.
У кого-нибудь есть какие-нибудь решения?