2012-01-22 53 views
1

我正在使用InstantRails學習Windows 7中的RoR。控制檯上的Ruby on rails - (表不存在)

我成功進入了sqlite3,並創建了一個名爲Trades的表,並帶有一些列。我擺脫了這一點,並進入了紅寶石控制檯。

>> class Trade < ActiveRecord::Base; end 
=> nil 
>> trade = Trade.new 
=> #<Trade barterID: nil, title: nil, message: nil, created_at: nil, updated_at: nil> 
>> trade.class 
=> Trade(Table doesn't exist) 

我仔細檢查,回到sqlite3,它絕對存在。我知道表格並沒有被命名爲「交易」,所以我嘗試重新命名爲Trade,但它給了更多的錯誤。我讀過表格名稱應該是複數形式,所以我認爲我有這個部分是正確的。

爲什麼它說表不存在?我會給我任何細節,我沒有想到。

+4

'#

+0

你有a)爲發送到db的查詢檢查了'log/development.log' b)你正在運行控制檯的環境,它匹配你創建表 – phoet

+0

的db最好的解決方案I認爲是安裝Linux並使用rails工作。認真 - 我從未想過我會像現在一樣愛上Ubuntu的;) – mrmnmly

回答

2

在Rails中,您必須對數據庫進行全面抽象。無論你使用sqlite或mysql的步驟是相同的​​(除了第一個配置,但sqlite不需要)。

正常的過程是這樣的:

  1. 生成模型與Rails生成

    軌生成模型貿易

  2. 編輯相關的遷移文件,(有點像在2012xxxxxxxx_create_trades.rb db/migrate/),並把它放在交易的模式。爲了將更改應用到數據庫

  3. 使用模型syntax here

  4. 運行rake db:migrate

+0

非常感謝,這有幫助! – robbievasquez

0

您是否手動創建表格?如果是這樣,它不是創建表格/模型的「Rails方法」。您應該使用Rails生成器:

rails g model Trade 

發電機將在數據庫中創建應用程序/模型模型類和遷移的文件/目錄遷移。然後,使用migration DSL添加db列。

3

軌G型貿易會給你一個正確的模板,但如果你只是想修復您的遷移文件,請確保您創建此表格:交易(複數不單數)

如果在數據庫中有貿易(單數)表,那麼Rails會給你(表不存在)錯誤。我認爲這個錯誤是一種誤導。