プラグインのREADME書きました。

一緒に仕事した方にはこんなのあるよと話してきたんですが、ちょっと説明する機会がありそうなので、READMEを書きました。
僕(と僕が参加した開発チーム)は実際にこれらを使用しています。よかったら使ってみて是非ご意見を効かせてください。

selectable_attr、selectable_attr_rails

selectable_attr、selectable_attr_railsは、コードに意味を持たせたい場合に便利なプラグインです。
http://github.com/akm/selectable_attr/tree/master
http://github.com/akm/selectable_attr_rails/tree/master

 class Person
   include ::SelectableAttr::Base
   
   selectable_attr :gender do
     entry '1', :male, '男性'
     entry '2', :female, '女性'
     entry '9', :other, 'その他'
   end
 end
上記のようなクラスがあった場合、以下のようなクラスメソッドを使うことが可能です。

 irb(main):020:0> Person.gender_ids
 => ["1", "2", "9"]
 irb(main):021:0> Person.gender_keys
 => [:male, :female, :other]
 irb(main):022:0> Person.gender_names
 => ["男性", "女性", "その他"]
 irb(main):023:0> Person.gender_options
 => [["男性", "1"], ["女性", "2"], ["その他", "9"]] # railsでoptions_for_selectメソッドなどに使えます。
 irb(main):024:0> Person.gender_key_by_id("1")
 => :male
 irb(main):025:0> Person.gender_name_by_id("1")
 => "男性"
 irb(main):026:0> Person.gender_id_by_key(:male) # 特定のキーから対応するidを取得できます。
 => "1"
 irb(main):027:0> Person.gender_name_by_key(:male)
 => "男性"

また使用可能なインスタンスメソッドには以下のようなものがあります。
 
 irb> person = Person.new
 => #<Person:0x133b9d0>
 irb> person.gender_key
 => nil
 irb> person.gender_name
 => nil
 irb> person.gender = "2"
 => "2"
 irb> person.gender_key
 => :female
 irb> person.gender_name
 => "女性"
 irb> person.gender_key = :other
 => :other
 irb> person.gender
 => "9"
 irb> person.gender_name
 => "その他"

genderが代入可能なことはもちろん、gender_keyも代入可能です。
# ただし、gender_nameには代入できません。

単一の値だけでなく複数の値を使うためのメソッドもありますし、selectable_attr_railsにはヘルパーメソッドや、DBから名称を取得したり、I18n対応するメソッドも含まれています。

schema_comments

schema_commentsプラグインを使うと、テーブルとカラムにコメントを記述することができます。
http://github.com/akm/schema_comments/tree/master

 class CreateProducts < ActiveRecord::Migration
   def self.up
     create_table "products", :comment => '商品' do |t|
       t.string   "product_type_cd", :comment => '種別コード'
       t.integer  "price", :comment => "価格"
       t.string   "name", :comment => "商品名"
       t.datetime "created_at", :comment => "登録日時"
       t.datetime "updated_at", :comment => "更新日時"
     end
   end

   def self.down
     drop_table "products"
   end
 end

でこのようなマイグレーションを実行すると、db/schema.rb には、
コメントが設定されているテーブル、カラムは以下のように出力されます。

ActiveRecord::Schema.define(:version => 0) do
  create_table "products", :force => true, :comment => '商品' do |t|
    t.string   "product_type_cd", :comment => '種別コード'
    t.integer  "price", :comment => "価格"
    t.string   "name", :comment => "商品名"
    t.datetime "created_at", :comment => "登録日時"
    t.datetime "updated_at", :comment => "更新日時"
  end
end

コメントは、以下のメソッドで使用することが可能です。
columns, create_table, drop_table, rename_table
remove_column, add_column, change_column

このプラグインを使うと、テーブルやコメントがどのようなものなのかをdb/schema.rbに記述を集約することも可能です。