在Ahoy for Rails中,我想跟踪从Visit
的现有数据派生的其他数据。 documentation建议覆盖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
。)< / p>
先执行super
,然后设置data[:world_region_id]
,结果相同。
地理编码本身可以正常工作,即当我检查数据库中的各个Visit
时,将设置country
等,但是world_region_id
将为nil。当我用字符串替换world_region_id
时,也可以使用派生data[:country]
的方式。
所以看来问题出在执行顺序上。我应该在哪里或如何添加逻辑以成功使用Visit.country
?