詳しくは Rails Guides: Active Support コア拡張機能 に書いてありますが、簡単にまとめたものがほしかったので適当に抜き出してまとめてみました。
pluralize
レシーバを「複数形」にしたものを返します。
"table".pluralize # => "tables"
"ruby".pluralize # => "rubies"
"equipment".pluralize # => "equipment"
"dude".pluralize # => "dudes"
"dude".pluralize(0) # => "dudes"
"dude".pluralize(1) # => "dude"
"dude".pluralize(2) # => "dudes"
singularize
レシーバを「単数形」にしたものを返します。
pluralizeと逆の動作です。
"tables".singularize # => "table"
"rubies".singularize # => "ruby"
"equipment".singularize # => "equipment"
camelize(camelcase)
レシーバをキャメルケース (冒頭を大文字にした単語をスペースなしで連結した語) にしたものを返します。
"/"は"::"に変換されます。
"product".camelize # => "Product"
"admin_user".camelize # => "AdminUser"
"backoffice/session".camelize # => "Backoffice::Session"
"visual_effect".camelize(:lower) # => "visualEffect"
underscore
キャメルケースをパスに変換します。
"::"は"/"に変換されます。
"Product".underscore # => "product"
"AdminUser".underscore # => "admin_user"
"Backoffice::Session".underscore # => "backoffice/session"
"visualEffect".underscore # => "visual_effect"
titleize(titlecase)
レシーバの語の1文字目を大文字にします。
"alice in wonderland".titleize # => "Alice In Wonderland"
"fermat's enigma".titleize # => "Fermat's Enigma"
dasherize
レシーバのアンダースコア文字をダッシュに置き換えます
"name".dasherize # => "name"
"contact_data".dasherize # => "contact-data"
demodulize
フルパスの (qualified) 定数名を与えられると、パス部分を取り除いて右側の定数名だけにしたものを返します。
"Product".demodulize # => "Product"
"Backoffice::UsersController".demodulize # => "UsersController"
"Admin::Hotel::ReservationUtils".demodulize # => "ReservationUtils"
"::Inflections".demodulize # => "Inflections"
"".demodulize # => ""
deconstantize
フルパスの定数を表す参照表現を与えられると、一番右の部分 (通常は定数名) を取り除きます。
"Product".deconstantize # => ""
"Backoffice::UsersController".deconstantize # => "Backoffice"
"Admin::Hotel::ReservationUtils".deconstantize # => "Admin::Hotel"
parameterize
レシーバを正しいURLで使用可能な形式に正規化します。
"John Smith".parameterize # => "john-smith"
"Kurt Gödel".parameterize # => "kurt-godel"
tableize
underscoreの次にpluralizeを実行したものです。
モデル名にtableizeを使用するとモデルのテーブル名を得られます。
"Person".tableize # => "people"
"Invoice".tableize # => "invoices"
"InvoiceLine".tableize # => "invoice_lines"
classify
与えられたテーブル名に対応するクラス名を返します。
"people".classify # => "Person"
"invoices".classify # => "Invoice"
"invoice_lines".classify # => "InvoiceLine"
"highrise_production.companies".classify # => "Company"
classifyが返すクラス名は文字列であることにご注意ください。
得られた文字列に対してconstantizeを実行することで本当のクラスオブジェクトを得られます。
constantize
レシーバの定数参照表現を解決し、実際のオブジェクトを返します。
"Fixnum".constantize # => Fixnum
humanize
属性名を (英語的に) 読みやすい表記に変換します。
具体的には以下の変換を行います。
- 引数に (英語の) 活用ルールを適用します(inflection)。
- 冒頭にアンダースコアがある場合は削除します。
- 末尾に"_id"がある場合は削除します。
- アンダースコアが他にもある場合はスペースに置き換えます。
- 略語を除いてすべての単語を小文字にします(downcase)。
- 最初の単語だけ冒頭の文字を大文字にします(capitalize)。
"name".humanize # => "Name"
"author_id".humanize # => "Author"
"author_id".humanize(capitalize: false) # => "author"
"comments_count".humanize # => "Comments count"
"_id".humanize # => "Id"
foreign_key
クラス名から外部キーカラム名を求める時に使用します。
具体的には、demodulize、underscoreを実行し、末尾に "_id" を追加します。
"User".foreign_key # => "user_id"
"InvoiceLine".foreign_key # => "invoice_line_id"
"Admin::Session".foreign_key # => "session_id"
"User".foreign_key(false) # => "userid"