単数形を複数形に、複数形を単数形にする方法
テーブル名などで複数形がわからなくなったりしたらこれを使えばいい。
#通常の場合 >> "program".singularize => "program" >> "programs".singularize => "program" >> "program".pluralize => "programs" #特殊な場合 >> "person".pluralize => "people" >> "people".singularize => "person" #単複同形 >> "sheep".pluralize => "sheep" >> "sheep".singularize => "sheep"
こんな感じ。
でもたまにうまくいかない。
>> "campus".pluralize => nil >> "campuses".singlarize => "campuse"
本当はcampusの複数形はcampuses。
こういう場合は以下のようにInflectorモジュールのルールを追加すればいい。
※Inflectorモジュールは、ActiveRecordによるクラス名とテーブル名の操作を円滑化するために、英単語の単純な変換を行う。 Inflectorの中心には、inflections.rbに含まれている複数化ルールがある。 デフォルトのルールは広範囲にわたるが、ルールを追加するのは簡単。 フレームワークをロードした跡に、coonfig/initializers/inflections.rbまたは同様のコンフィグレーションファイルに追加すればよい。
例えば、config/environment.rbで、
Inflector.inflections do |inflect| inflect.irregular "campus","campuses" end
これでちゃんと変換される。
>> "campus".pluralize => "campuses" >> "campuses".singularize => "campus"
また、不可算名詞の場合は以下のように追加する。
Inflector.inflections do |inflect| inflect.uncountable("air", "information", "water") end
>> "air".pluralize => "air" >> "air".singularize => "air"
参考
- Railsで単数形をsingularizeすると不可解な変化をする場合の対応 - MothProgのうしろがわ
- ActiveSupport(6) - 単数形と複数形の変換 - バリケンのRuby日記 - Rubyist
RailsによるアジャイルWebアプリケーション開発 第2版
- 作者: Dave Thomas,David Heinemeier Hansson,Leon Breedt,Mike Clark,Andreas Schwarz,James Duncan Davidson,Justin Gehtland,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2007/10/26
- メディア: 大型本
- 購入: 18人 クリック: 300回
- この商品を含むブログ (138件) を見る
お読み頂きありがとうございます。
少しでもお役に立てたらクリックお願いします↓。
◆◆このブログのサイトマップへ◆◆