コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Modelを使った実装でカラム名を探すのに困ることが減るgem、annotate

表現モデルによってはどうしても長いカラム名を付けてしまったり、普段使い慣れないtypoしやすい英単語名をつけることがあると思います。

その際に手助けになるのがgem annotate です。

環境

rails (5.1.6)
annotate (2.7.4)

どういうものか

Modelのクラスにそのモデルのカラム名などの情報をファイル上部にコメント書きしてくれます。

例えば、以下のようなmigrationファイルでmigrateするとします。

class CreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      t.string :name, null: false, default: ""

      t.timestamps
    end
  end
end

このテーブルが作られた状態でコマンドを打つと以下のように結果が返ってきて

$ bundle exec annotate
Annotated (3): app/models/user.rb, test/models/user_test.rb, test/fixtures/users.yml

Modelクラスにカラムの情報がコメント記載されます

# == Schema Information
#
# Table name: users
#
#  id         :bigint(8)        not null, primary key
#  name       :string(255)      default(""), not null
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class User < ApplicationRecord
end

これでいちいちDBを見たりしなくてもカラム名がわかって、コード書くときもコメントからコピペをすればタイポなどを防ぐことができるので、多方面の重宝する。

余談

手動でmigrationファイルやモデルを作った時にRailsの規則に則ってないとコメントが正しく書き込まれないのでファイル名のタイポやクラス名の間違いに気づきやすいという副次的効果がある

個人的にはRailsアプリケーションには絶対いれたいgemの一つです。

関連リンク