2015-04-28 31 views
0

我試圖創建一個rake任務,它查詢API並將記錄添加到表中。但是,我無法訪問該表(我收到以下錯誤)。Rails - 無法從rake任務中訪問表

ActiveRecord::StatementInvalid: Could not find table 'exchange_rates' 

我的代碼是:

namespace :query_api do 

    task get_currency_values: :environment do 

    exchange_rate = ExchangeRate.new 
    #some other code 

    end 

end 

的代碼位於

lib/tasks/query-api.rake 
+1

愚蠢的問題遇到錯誤的環境中運行,但我不得不問。表'exchange_rates'是否存在? –

+0

它出現在schema.rb中,並且服務器正在運行,因此我假定該表存在。 – octavian

+2

也許這個表格存在於一個環境中(比如說「發展」),而不是另一個(比如說「生產」)?如果是這種情況,您可能需要在不存在的環境中運行數據庫遷移以創建它。 –

回答

1

與這些其他意見同意。這是一個直截了當的錯誤。如果您在相關環境(developmentproduction或其他)中加載軌道控制檯(rails c)並鍵入ExchangeRate.new,則應該看到相同的錯誤。

從那裏調查與數據庫的連接並確保其實際工作。

此外,還要檢查其移民已經在你與rake db:migrate:status

+0

謝謝,這確實是問題(記錄只在生產中保存)。我怎樣才能讓記錄保存在開發中呢? – octavian

+0

檢查以確保您的「生產」和「開發」模式具有相同的遷移,並且模式匹配。如果他們不匹配(並且確實看起來他們沒有),那麼這會告訴你不同之處。 – jefflunt