# Rubyで複数形にしたり、単数形にしたり、ラジバンダリ _published: 2009/11/11_ ![alt](http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/shunsuk/20091111/1257944918) 元気ですかー!?私は咳が止まらなくてツライので、「元気ですかー!?」などと聞かれると、かなりウザイです。 Railsは、モデル名を単数形、テーブル名を複数形にしておくと、自動的にマッピングしてくれますよね。Convention over Configurationです。さて、ということは、英単語の単数形と複数形の変換をどこかでやってるということです。それが、ActiveSupport の `Inflector` モジュール。 ActiveSupportを読み込みます。そうすると、 `String` が拡張されるのです。そう、拡張されるのです。irbでやってみよう。 ```ruby >> require 'active_support' => true ``` 準備OK。 東京DOGS的なノリで、dogで試してみましょう。 ```ruby >> "dog".pluralize => "dogs" >> "dogs".singularize => "dog" ``` じゃあ、sがつくだけじゃない不規則な単語は? ```ruby > "person".pluralize => "people" >> "people".singularize => "person" ``` ちゃんと変換してくれます。 じゃあ、じゃあ、辞書に載ってない単語は?Matzさんの複数形は? ```ruby >> "Matz".pluralize => "Matzs" >> "Matzs".singularize => "Matz" ``` おお、ムリヤリ。。。 ここまでは、よく知られた内容です。言わば、前フリです。変身前のフリーザです。略して、前フリです。実は、単数形と複数形の変換ルールを自分で足すことができるんです。 `Inflector` クラスの `inflections` メソッドを使います。 ```ruby >> ActiveSupport::Inflector.inflections do |inflect| ?> inflect.irregular('foot', 'feet') >> end => nil ``` irbだと分かりにくいなら、下のコードを。 ```ruby ActiveSupport::Inflector.inflections do |inflect| inflect.irregular('foot', 'feet') end ``` もともと、` "foot".pluralize` すると `foots` が返ります。そこで、上のように変換ルールを書いておくと、 `feet` を返すことができます。 ```ruby >> "foot".pluralize => "feet" >> "feet".singularize=> "foot" => "foot" ``` `foots` という使い方はあるので、必ずしも `feet` が正しいわけではないです。あくまで、例ですから。よろしく。 Railsで独自ルールを追加したい場合は、`config/environment.rb` にでも書いておけばいいかと思います。元気があれば、何でもできます。私は元気がないので、何もできません。