今月2つ目のgemです
activerecord-simple_index_name (0.1.0): Shorten index name https://t.co/vh4zzSYAMj
— RubyGems (@rubygems) 2015, 11月 29
activerecord-simple_index_name について
activerecordのデフォルトのindex名を短くするgemです
例
こんなmigrationがあった場合
create_table :user_stocks do |t| t.integer :user_id, null: false t.integer :article_id, null: false t.timestamps null: false end add_index :user_stocks, [:user_id, :article_id]
- activerecord-simple_index_name を使わない場合 :
index_user_stocks_on_user_id_and_article_id - activerecord-simple_index_name を使った場合 :
user_id_and_article_id
カラム名だけのシンプルなindex名になります。テーブル名が長いとよく「index名が長いぞ(゚Д゚)ゴルァ!」って言われてなくなくnameを指定すると思いますが、そういうのが少なくなります。
ちなみに add_index で生成されるindexにテーブル名が含まれているのはSQliteとの兼ね合いだった気がするのでMySQLとかで使う分にはindexにテーブル名が含まれなくても問題ないです
参考
使い方
Gemfileに書いてrequireすればmigrateした時に勝手にindex名が短くなります。RailsとPadrinoで確認済
作った経緯
- 社内勉強会でこれとは別のindex名を短くする社内gemが紹介される
- 丁度隣にその社内gemを作った人がいたので「前々からOSSにしたいって言ってたけどやんないんなら僕がやってもいいっすか?」*1と聞いて許可を貰う
- そしたら別の人から http://qiita.com/kamipo/items/6e5a1e238d7cc0611ade をオススメされる
- id:kamipo さんにgem化の許可貰ってgem作成
qiitaを見るとRails3系の実装ですが4系でも問題なく動いていました
index名が長くならないのは便利なので是非ご利用下さい
*1:2~3年前くらいに社内gemとして公開されていた