在种子文件中创建Rails期间阻止API调用

时间:2013-03-13 20:07:56

标签: ruby-on-rails ruby-on-rails-3 api geokit

我有一个使用geokit的rails模型,其中包含调用acts_as_mappable :auto_geocode=>true之类的行before_validation :geocode_address, :on => :create。但是,我的问题是我的开发数据库有一个种子文件,它调用Rails模型,然后在create上调用它,调用外部API并在我没有连接到互联网时失败。我可以采用哪些方法?

如果这种方法同时涵盖了这种情况,并且当我运行我的测试时也会很好,但是我已经有了解决那些不太漂亮的测试的方法。

1 个答案:

答案 0 :(得分: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)