Rails4.2.0のadd_foreign_keyについて
Rails 4.2使い始めてschema.rbをgit管理している場合、
add_foreign_key
をadd_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が犯されちゃうよー、というお話。