加藤です。
MySQLの4.1以降ではテーブルの作成時やALTER TABLEでカラムを変更する際に、下のようにカラムコメントを付けることが出来ます。
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL COMMENT '氏名: 日本語可。50文字以内。',
`email` varchar(100) COMMENT 'メールアドレス: 半角英数文字のみ。100文字以内。',
PRIMARY KEY (`id`)
)
また、付けたコメントは下のようなSQLで取得することが出来ます。
mysql> SHOW FULL COLUMNS FROM users;
このMySQLのカラムコメントをRailsのマイグレーションで簡単に設定できるようにすれば、ドキュメント生成なんかに使いまわせてDRYで便利じゃないかということでパッチを書きました。
module ActiveRecord
module ConnectionAdapters
class ColumnDefinition
attr_accessor :comment
def to_commented_sql
self.comment ? "#{to_sql} COMMENT '#{self.comment}'" : to_sql
end
alias to_s :to_commented_sql
end
class TableDefinition
alias :_orig_column :column
def column(name, type, options = {})
_orig_column(name, type, options)
if comment = options[:comment]
column = @columns.find { |col| col.name == name }
pos = @columns.index(column)
@columns[pos].comment = comment
end
self
end
end
end
end
これをconfig/initializers/column_comment.rbあたりに置いておけば、マイグレーションでのテーブル作成時にカラムコメントを設定出来るようになります。
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :name, :null => false, :limit => 50, :comment => '氏名: 日本語可。50文字以内。'
t.string :email, :limit => 100, :comment => 'メールアドレス: 半角英数文字のみ。100文字以内。'
end
end
def self.down
drop_table :users
end
end