2013-03-13 39 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