2

正しく複数形化されていない用語の複数形ルールを作成したいと考えています。これをinflections.rbファイルに配置します。

用語は、2 番目の単語の代わりに最初の単語を複数形にすることができるいくつかの複合語ですが、私の場合、複数形化機能を最初の用語のみに適用するオプションはありません。例えば:

'base of knowledge'.pluralize'bases of knowledge'代わりに返す必要があります'base of knowledges'

このような正規表現を使用して文字列/\sof\s/の一部を見つけよ うとof しましたが、正しく変化させるルールを書くことができませんでした。

inflect.plural(???, ???)

Obs: 「ナレッジ ベース」のような言語的な回避策を探しているわけではありません。例は単なる説明です。

4

2 に答える 2

2

これを試して:

  1. 次のファイルを作成します。config/initializers/inflections.rb

  2. 動的ではない単純な例:

    ActiveSupport::Inflector.inflections do |inflect|
      inflect.irregular 'base of knowledge', 'bases of knowledge'
    end
    

    これには、単語の代わりにそれぞれの不規則な複数形を指定するだけで済みます。pluralize メソッドを呼び出す限り、それが見つかります。

編集:

これらすべての種類の変更を 1 つのメソッドで処理したい場合。irregular_pluralizepluralize と同じ入力を受け入れるメソッド、または 3 つのオブジェクトを受け入れるメソッドを定義できます。

def irregular_pluralize(count, string)
  if count > 1
    split_string = string.split(" ")
    size = split_string.size
    first = split_string.first
    first.pluralize + " " + split_string.last(size - 1).join(" ")
  else
    string
  end
end
于 2015-01-09T18:40:53.983 に答える