В 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
?