10

Ruby on rails では、モデル、ビュー、およびコントローラーの名前に単数形と複数形の規則が使用されます。userと呼ばれるモデルとと呼ばれるコントローラーがある場合があるため、これは非常に優れていusersます。これは、user(s)、tree(s)、book(s) など、ほぼすべての単語で機能するため、複数形を形成する s だけを持つすべての単語です。

しかし、文字「y」で終わる単語など、単に複数形を形成するために s を必要としない単語はどうでしょうか? たとえば、市と市?Railsは違いを知っていますか、それとも文法的に間違っていてもcityand と書く必要がありますか?citys

4

2 に答える 2

18

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のドキュメントを再度参照してください。

于 2012-09-13T19:54:02.923 に答える
1

多くの一般的なものについては、それをうまく処理する方法を知っています。次のようにして、IRB でこれを自分で試すことができます。

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

そして、値が "cities" の文字列が返されます。に記載されている手順に従って、抑揚を追加および調整することもできます。config/initializers/inflections.rb

于 2012-09-13T19:56:11.437 に答える