2017-01-17 15 views
2

私は、Railsの方法でテーブルを作成する方法のオンラインの例に従っており、作成した移行スクリプトが参照を含んでいないことがわかりました。おそらく私は何かが間違っていると思ったので、SQLite3データソースに対するテストアプリケーション/マイグレーションを作成しようとしました。私は次のコマンドを実行しました:DBマイグレーションスクリプトが参照で破損する

$ rails g scaffold SchoolClass name 
$ rails g scaffold Student name SchoolClass:references 

そして私のマイグレーションスクリプトは他にもありました。

Migration script for dependent table with reference to Model

私はSQLite3の移行スクリプトを実行し、それがうまく働きました。

私はPostgresのデータソースに対して、上記と同じ手順を実行しようとしたとき、私は次のことを得ることに保た:

PG::UndefinedTable: ERROR: relation does not exist 

私は、移行スクリプトに行き、更新した場合、私は、この問題を過ぎて得た唯一の方法ですt.references行を開き、クラス名を実際のテーブル名に置き換えます。 Railsの移行ガイド(http://guides.rubyonrails.org/v2.3/migrations.html#special-helpers)では、参照ヘルパーのためにモデル名を渡しています。 Postgresの場合、これはそうではないようです。

モデル名を表名に置き換えるのは簡単な修正ですが、移行するには大量の表があり、各表には多数の参照を入れることができます。誰もがこれを以前見たことがありますし、スキャフォールドユーティリティを使って移行を続ける方法がありますか?任意の有用な援助の

鑑賞、

  • ジョー

答えて

1

それはt.references :school_classの代わり:SchoolClassである必要があり、正しい足場コマンドがrails g scaffold Student name school_class:referencesです。 rails guides on naming conventions

関連する問題