2012-03-16 54 views
2

我有一個試圖填充對象的黃瓜步驟,其中包括剛剛通過遷移添加的新列。列被命名爲IS_ACTIVE,錯誤是:Cucumber規範無法看到由最新遷移添加的列

 unknown attribute: is_active (ActiveRecord::UnknownAttributeError) 

被提出作爲此行的結果:

city = City.find_or_create_by_name_and_state(:name => attributes['City'], :state => attributes['State'], :icao_code => attributes['ICAO'], :display_order => attributes['Order'], :is_active => attributes['Active'], :current_temperature => attributes['Current']) 

奇怪的是,今天早些時候,我添加的列display_order,這是工作正常。

如果我刪除:從步驟IS_ACTIVE分配和增加城市分配後「把city.attributes」,IS_ACTIVE是屬性之列。但是如果我從rails控制檯執行「City.new.attributes」,那麼is_active屬性就是

看來,黃瓜測試沒有在適當的環境中執行,但它能夠看到最近display_order屬性,它僅被定義在開發環境,因爲是最近IS_ACTIVE屬性。

任何想法如何讓黃瓜查看屬性?

感謝,

菲爾

+0

什麼樣的環境,你在運行您的黃瓜測試?你運行耙db:測試:準備? – kclair 2012-03-16 21:20:16

回答

2
rake db:migrate 
rake db:test:prepare 

測試環境中不使用開發中使用同一個數據庫。您必須運行命令rake db:test:準備在每次進行遷移後重新創建實際更改數據庫結構的命令。

該命令只需創建一個基於schema.rb文件的測試數據庫(或structure.sql,這取決於項目的配置)時,創建/更新,當您運行遷移。

Check the info from the rails guides

+0

就是這樣。 db:test:prepare是我錯過的。非常感謝! – POOCH 2012-03-16 22:55:12

+1

'rake db:test:prepare'已棄用Rails 4.'''警告:db:test:prepare已棄用。 Rails的測試助手現在可以自動保持你的測試模式,請參閱發行說明details.'''看到http://stackoverflow.com/questions/23351783/when-i-ran-bundle-exec-rake-testprepare-it-誤碼出,但束-EXEC-RAKE – kittyminky 2015-02-11 04:12:54