2013-03-13 34 views
0

我有一个使用geokit的rails模型,其中包含行acts_as_mappable :auto_geocode=>true,该行调用的内容类似before_validation :geocode_address, :on => :create。然而,我的问题是,我的开发数据库有一个种子文件,它调用了Rails模型,然后在创建时调用它,这会调用一个外部API,当我没有连接到互联网时会失败。我可以使用哪些方法?阻止在种子文件中创建Rails时的API调用

如果该方法涵盖了这种情况以及我运行测试时的情况,那将是非常好的,但是我已经为不太漂亮的测试工作了。

回答

1

你可以尝试这样的事:

# /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) 
+0

所以我会把第一行放在我的development.rb文件的顶部,最后一行在底部,如果这就是我创建种子模型时调用的那一行?如果这样做不起作用。我相信问题在于它碰到了模型并且使用了默认值true。 – 2013-03-13 20:19:02

+0

将这些代码行放在'seeds.rb'文件的顶部和底部,围绕创建不需要自动地址解析的模型的代码。我将在代码示例的顶部添加文件名。 – Sam 2013-03-13 20:21:27

+0

它仍然无法正常工作。我会玩这个大概的想法。 – 2013-03-13 20:26:33