Rails / Ahoy: отслеживание дополнительных данных, полученных из геокодирования - PullRequest
0 голосов
/ 06 января 2019

В Ahoy for Rails я хочу отслеживать дополнительные данные, которые получены из существующих данных Visit. Документация предлагает переопределить метод track_visit.

Однако данные Visit, которые мне нужно использовать, - это данные геокодирования, которые, по-видимому, отсутствуют (пока) при выполнении track_visit.

В частности, я добавил столбец world_region_id в мою таблицу Visits, которая соответствует модели WorldRegion в моем приложении. Я хочу взять строку Visit.country и сопоставить ее с соответствующей WorldRegion. Однако следующий код всегда оставляет world_region_id равным nil:

  def track_visit(data)
    data[:world_region_id] = WorldCountry.find_by_alias(data[:country])&.world_region_id
    super(data)
  end

(.find_by_alias принимает любую строку названия страны, включая общие вариации, чтобы разрешить различные источники геокодирования, например, "Великобритания" и "Великобритания" будут отображаться на одну и ту же WorldCountry.)

Сначала выполняется super, а затем устанавливается data[:world_region_id], результат тот же.

Само геокодирование работает нормально, т.е. когда я проверяю соответствующие Visit в базе данных, будет установлено country и т. Д., Но world_region_id будет нулевым. Способ получения world_region_id также работает, когда я заменяю data[:country] на строку.

Так что, похоже, проблема заключается в порядке выполнения. Где или как мне добавить логику, чтобы я мог успешно использовать Visit.country?

...