[Rails5] Active Support::Inflectorの便利な活用形メソッド群

こんにちは、hachi8833です。 Active Support探訪シリーズは、前回のString#pluralizeで扱ったActiveSupport::Inflectorの便利メソッド群を概観します。 今回のメソッド 今回は、初めてcore extension以外のメソッドにお邪魔することになります。 メソッド: ActiveSupport::Inflectorのメソッド ディレクトリ配置: https://github.com/rails/rails/blob/5-0-stable/activesupport/lib/active_support/inflector/methods.rb 条件 Railsバージョン: 5-0-stable(執筆時点では5.0.1) Rubyバージョン: 2.4.0 ActiveSupport::Inflector Rails 5.0のActiveSupport::Inflectorメソッド一覧 Rails 5.0のActiveSupport::Inflectorには以下の活用形関連メソッドがあります。ActiveSupport::Inflectorのメソッド群はやや雑然としているので、対になっているメソッドなどをグループ化してみました。 英単語の単数形⇔複数形変換 #pluralize #singularize 英語の序数 #ordinal #ordinalize アルファベットの大文字小文字変換 #upcase_first #humanize #titleize 記号の変換 #dasherize 定数名・モジュール名の変換 #constantize #safe_constantize #deconstantize #demodulize キャメルケース⇔スネークケース変換 #camelize #underscore クラス名/モジュール名/テーブル名の変換 #classify #tableize パラメータ化 #parameterize 活用形のカスタマイズ ActiveSupport::Inflector.inflections 近い英文字への変換 ActiveSupport::Inflector.transliterate 外部キー名への変換 #foreign_key 多くはStringクラスですが、数値に関連するメソッドもあります。 最初に、各ケースについて以下に簡単にまとめておきます。 スネークケース 「active_record」のように小文字のみの単語をアンダースコアで結合(Railsではメソッド名などで使用) キャメルケース(upper camel case) 「ActiveRecord」のように大文字で始まる単語を結合(Railsではクラス名などで使用) キャメルケース(lower camel case) 「activeRecord」のように先頭のみ小文字、残りは大文字で始まる単語を結合 英単語の単数形⇔複数形変換 #pluralize (Stringクラス) 英語の単数形を複数形に変換します #singularize (Stringクラス) 英語の複数形を単数形に変換します 活用形はすべてを網羅しているわけではないのでご注意ください。 #pluralize ‘post’.pluralize # => “posts” ‘octopus’.pluralize # => “octopi” ‘sheep’.pluralize # => “sheep” ‘words’.pluralize # => “words” ‘the blue mailman’.pluralize # => “the blue mailmen” ‘CamelOctopus’.pluralize # => “CamelOctopi” ‘apple’.pluralize(1) # => “apple” ‘apple’.pluralize(2) # => “apples” ‘ley’.pluralize(:es) # => “leyes” ‘ley’.pluralize(1, :es) # => “ley” # singularize ‘posts’.singularize # => “post” ‘octopi’.singularize # => “octopus” ‘sheep’.singularize # => “sheep” ‘word’.singularize # => “word” ‘the blue mailmen’.singularize # => “the blue mailman” ‘CamelOctopi’.singularize # => “CamelOctopus” ‘leyes’.singularize(:es) # => “ley” 英語の序数 #ordinal (Integerクラス)数字に対応する英語の序数(ordinal numbers)の接尾語を返す #ordinalize (Integerクラス)数字に英語の序数(ordinal numbers)を追加して返す # ordinal 1.ordinal # => “st” 2.ordinal # => “nd” 1002.ordinal # => “nd” 1003.ordinal # => “rd” -11.ordinal # => “th” … Continue reading [Rails5] Active Support::Inflectorの便利な活用形メソッド群