2012-01-22 11 views
1

私はWindows 7のInstantRailsでRoRを学んでいます。コンソールからのRuby on Ruby - (テーブルは存在しません)

私は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に戻って、間違いなくそれを確認しました。私はテーブルが "貿易"という名前ではないことを知っているので、私は貿易のように再命名しようとしましたが、それはさらに多くの誤りをもたらしました。私はテーブル名が複数形でなければならないことを読んだので、私はその部分が正しいと思う。

テーブルが存在しない理由についての助けがありますか?私は、私が考えなかった詳細を述べます。

+4

'#

+0

a)dbに送信されるクエリの 'log/development.log'をチェックしてください。b)コンソールを実行している環境と、テーブルを作成したdbと一致する環境 – phoet

+0

ベストソリューションLinuxをインストールして、レールで作業することを考えてください。真剣に - 私は今のようにubuntuと恋になるとは思わなかった;) – mrmnmly

答えて

2

Railsでは、DBを完全に抽象化する必要があります。 sqliteやmysqlを使って作業しても、手順は同じです(ただし、最初の設定は除きますが、sqliteは必要ありません)。

通常のプロセスは以下の通りです:

  1. はレールが

    レールがモデルの貿易を生成するジェネレータでモデルを生成

  2. 編集関連する移行ファイル、(中2012xxxxxxxx_create_trades.rbのようなものdb/migrate/)、それをTradeのスキーマにします。 syntax here

  3. 実行rake db:migrate

+0

ありがとう、これが助けになった! – robbievasquez

0

テーブルを手動で作成しましたか?そうであれば、テーブル/モデルを作成するのは "Railsの方法"ではありません。

ジェネレータは、モデル/クラスのモデルクラスと、db/migrateディレクトリのマイグレーションファイルを作成します。次に、migration DSLを使用してdb列を追加します。

3

はグラムモデルの貿易はあなたに正しいテンプレートを与えるレールが、あなただけ修正したい場合は、あなたのモデルを使用したデータベースへの変更

  • を適用するために、このテーブルを作成することを確認してください:取引(複数ではありません)

    データベースにtrade(singular)テーブルがある場合、Railsはあなたに(テーブルは存在しません)エラーを表示します。私はこのエラーが誤解を招くようなものだと思う。

  • 関連する問題