Ruby on rails 在种子文件中创建Rails期间防止API调用

Ruby on rails 在种子文件中创建Rails期间防止API调用,ruby-on-rails,ruby-on-rails-3,api,geokit,Ruby On Rails,Ruby On Rails 3,Api,Geokit,我有一个rails模型,它使用geokit,其中包括行acts\u as\u mappable:auto\u geocode=>true,它在验证之前调用类似:geocode\u address,:on=>:create。然而,我的问题是,我的开发数据库有一个seeds文件,它调用th Rails模型,然后在create上调用它,create调用外部API,当我没有连接到internet时失败。我有什么办法 如果该方法同时涵盖了这两种情况以及我运行测试时的情况,那就太好了,但是我已经有了一个解决

我有一个rails模型,它使用geokit,其中包括行
acts\u as\u mappable:auto\u geocode=>true
,它在验证之前调用类似
:geocode\u address,:on=>:create
。然而,我的问题是,我的开发数据库有一个seeds文件,它调用th Rails模型,然后在create上调用它,create调用外部API,当我没有连接到internet时失败。我有什么办法


如果该方法同时涵盖了这两种情况以及我运行测试时的情况,那就太好了,但是我已经有了一个解决测试问题的方法,这不是很好。

您可以尝试以下方法:

# /db/seeds.rb

ModelName.class_eval { acts_as_mappable(:auto_geocode => false) }

# Create seed models...

ModelName.class_eval { acts_as_mappable(:auto_geocode => true) }
这甚至可能奏效

ModelName.acts_as_mappable(:auto_geocode => false)
编辑:

另一种解决方案是
skip_callback
方法:

ModelName.skip_callback(:validation, :before, :auto_geocode_address)

所以我会把第一行放在development.rb文件的顶部,最后一行放在底部,如果这是我创建种子模型时所说的话?如果是这样,那就不行了。我认为,问题在于它命中了模型,并且使用了默认值true。将这些代码行放在
seeds.rb
文件的顶部和底部,放在创建不想自动地理编码的模型的代码周围。我将把文件名添加到代码示例的顶部。它仍然不起作用。我将仔细考虑一下这个总体思路。尝试在agency上调用
acts\u as\u mappable
,例如:
agency.acts\u as\u mappable(:auto\u geocode=>false)
其中agency是一个已设置的局部变量。我得到
未定义的方法
作为#``的_可映射`。我认为打开类并修改它是一种很好的方法,但不确定如何执行它。请尝试
Agency.acts\u as\u mappable(:auto\u geocode=>false)
。您需要在模型类上调用
acts\u as\u mappable
,而不是模型的实例。