食べられません

プログラミングとか漫画とか生活とか

Rails4.2.0のadd_foreign_keyについて

Rails 4.2使い始めてschema.rbをgit管理している場合、
add_foreign_keyadd_indexな感覚で使うと差分が発生してしまいそうなのでメモしておく。

add_index

add_index :suppliers, :nameとしてやるとIndex名はデフォルトでindex_suppliers_on_nameとなる。
それは https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb#L588 にある通り。
対象のカラムが特別多くなければ:nameオプションを使うこともないだろう。

add_foreign_key

add_foreign_key :articles, :authorsとしてやると外部キー名は意外な事に
fk_rails_fa2b6bcbc5(ランダム)となってしまう。
実装は https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb#L983 の通り。

というわけで、外部キーを作成するときは意識して:nameオプションを使っておかないと
毎回別名で作成されてschema.rbが犯されちゃうよー、というお話。