Pebble's Diary

プログラマーの作業メモ

railsでDBのテーブルに外部制約キーをつける場合の注意

railsでデータベースのテーブルに外部制約、CASCADE DELETEをつけたい場合は、 Gemfileにforeignerをつけてmigrateするか、SQLを手で作らないといけないらしい。

参考URL http://d.hatena.ne.jp/iriya_0624/20130427/1367082310

注意点として、 rake db:migrate:reset した場合、migrateファイルは日付時刻の古い順に実行されるので、外部キーのテーブルがないと 外部キーを追加するSQLの実行でエラーになる。

foreigner使ってみたけど、外部制約のカラム名がidから変更できなくて、動かないので、 SQLで直打ちで対応しました。 しかし、railsってこんなめんどくさいのかあ。

デフォルトの主キー名がidなの違和感あるなあ。 規約大事なら、{テーブル名}_idが主キーじゃないのか?