2012-09-13 9 views
9

Ruby on railsは、モデル名、ビュー名、コントローラ名に単数形と複数形を使用しています。これは、userというモデルとusersというコントローラを持つ可能性があるため、非常に優れています。これは、ユーザー、ツリー、本などのほとんどすべての単語で動作します。したがって、複数形を構成するすべての単語があります。インテリジェントな複数のインテリジェントな?

しかし、文字「y」で終わる単語のように、複数形を作るのにsを必要としない単語はどうですか?たとえば、都市と都市?レールがその違いを知っていますか、文法的に間違っていてもcitycitysと書く必要がありますか?

答えて

17

Railsは複数の複数形を認識しています。

1.9.2p318 :001 > "city".pluralize 
=> "cities" 
1.9.2p318 :002 > "cities".singular 
=> "city" 

しかし、あなたはそれを知っていない複数形を見つけることができ、学習されることはありません:それは、例えば、「都市」を扱うことができます。 ActiveSupport::Inflector

のためのマニュアルを参照してくださいRailsのコアチームは、抑揚ライブラリ のためのパッチが誤っ抑揚に頼ることも壊すレガシーアプリケーション を避けるために受け入れられないだろうと述べています。 不正な情報を発見してアプリケーションに必要な場合は、 が必要です(後述)。

あなたはどのように修正しますか? config/initializers/inflections.rb。たとえば:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural /^(.*)(l)ens$/i, '\1\2enses' 
end 

は再びレールに新しい抑揚を教える方法の詳細についてActiveSupport::Inflectorためのドキュメントを参照してください。

+0

に記載されている手順に従って、変曲点を追加して調整することもできます。ありがとうございました! – weltschmerz

1

一般的なものの多くは、それをかなりうまく処理する方法を知っています。

require 'active_support/all' 
ActiveSupport::Inflector.pluralize("city") 

そして、あなたは値が「都市」との文字列が返されます:あなたは、次の手順を実行して、IRBで、この自分を試すことができます。 config/initializers/inflections.rb

関連する問題