プラグインの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に記述を集約することも可能です。