Rails PostGIS ActiveRecord Adapter иногда возвращает строку вместо объекта RGeo :: Geos :: CAPIPointImpl - PullRequest
2 голосов
/ 12 октября 2019

Я использую 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, чтобы вернуть координаты, но я не уверен, как это исправить.

У кого-нибудь есть какие-нибудь решения?

...