読者です 読者をやめる 読者になる 読者になる

railsの複数形・単数系がうまくいかない場合の対処

どう見てもこれは変換がおかしいだろってことがありました。

'loves'.singularize
=> "lofe"

普通にloveを返すべきところじゃん・・・

このおかげでpathがnew_lofe_pathなんてなったりしました。

これはどうにかしたいと思ったら、イレギュラー登録をすることで対応できました。

まずはこのメソッドの紹介します。

単数系→複数形

pluralize

"send".pluralize
=> "sends"

複数系→単数形

singularize

"sends".singularize
=> "send"

イレギュラーな変換を登録する

config/initializers/inflections.rb

# ActiveSupport::Inflector.inflections(:en) do |inflect|
#   inflect.plural /^(ox)$/i, '\1en'
#   inflect.singular /^(ox)en/i, '\1'
#   inflect.irregular 'person', 'people'
#   inflect.uncountable %w( fish sheep )
# end

コメントアウトされてサンプルが書かれていますね。

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'love', 'loves'
end

これで大丈夫になります。

以上です。