コントローラーとヘルパーに単数形の名前を使用することに不利な点はありますか?これに依存するものはないようです。少なくとも私の限られた実験によれば、ヘルパーは対応するコントローラーとして単数形と複数形について同じ選択をする必要はないようです。本当?
間違いなく複数。
コントローラ:
dog_controller.rb
ルート:
map.resources :dogs # => blows up
map.resources :dog # is ok, but...
dogs_path # => blows up
dog_path # => ok
コントローラ:
dogs_controller.rb
ルート:
map.resources :dogs
dogs_path # => ok
dog_path # => ok
Rails generate controller --help
には複数の例があります。
Example:
`Rails generate controller CreditCards open debit credit close`
CreditCards controller with URLs like /credit_cards/debit.
Controller: app/controllers/credit_cards_controller.rb
Test: test/controllers/credit_cards_controller_test.rb
Views: app/views/credit_cards/debit.html.erb [...]
Helper: app/helpers/credit_cards_helper.rb
コントローラに複数の名前を使用することは単なる慣例です。
通常、複数の名前はより自然に聞こえます(特に、特定のモデルに直接結び付けられているコントローラーの場合:ユーザー->ユーザーなど)。好きなものを使用できます。
ヘルパーに関しては、すべてのヘルパーはデフォルトですべてのコントローラーで使用できるため、技術的には、ヘルパーに名前を付ける方法はまったく関係ありません。コントローラーのヘルパー関数をコントローラーと同じ名前のヘルパーに保持することは、単なる別の規則です。
モデルは、Userのような単一のオブジェクトを参照するため、特異です。コントローラーは、ユーザーのコレクションのコントロール(メソッド)であるため、複数です。ルートの名前の付け方は、その個々の開発者次第です。 WebリクエストのURLが単数形または複数形であることをユーザーから不満に思ったことはありません。最終結果は、エンドユーザーに高品質のページ表示またはAPIリクエストを提供しながら、現在および将来の貢献者に共通の規則を維持します。
Railsガイド: http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-Rails-default に非常に完全な説明があります。
実行時にそのモデルの1つ以上のインスタンスが存在できるかどうかにかかわらず、1つのコントローラーが1つのモデルを処理するのはRailsの規則です。ただし、(一部の)コントローラー(および関連するビュー)が特定のモデルに関連付けられず、より複雑な機能セットを処理するRailsアプリケーションを使用できます。この場合、自動複数形化は意味をなしません。
現在作業中のRailsアプリケーションはこのカテゴリに当てはまります。Railsは、1か所で単数形として定義する識別子が複数形で使用されることを期待しているので、単にイライラします。他の場所で。たとえば、config/routes.rb
で次のようなものを定義したい場合があります。
resource :dashboard, :only => [:show]
次に、コントローラDashboardController
にアプリケーションの特定の側面に関する概要情報を表示し、複数のデータベーステーブルから情報を収集するようにします。そのため、ここでは、Dashboard
はアプリケーションのモデルを参照せず、コントローラーの名前をDashboardsController
にするのは奇妙なことです。
this answer で自動複数形のイライラに対する良い解決策を見つけました。つまり、ファイルconfig/initializers/inflections.rb
を編集し、自動的に複数形にしたくない単語をこの定義に追加します。
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end
コントローラー名に単数形を使用すると気分が良くなります
コントローラーがリソースの場合、複数でなければなりません...
例えば
コントローラ
articles_controller.rb
型
article.rb
ただし、次のような対応するモデルがない場合は、単一のコントローラー名を使用できます
welcome_controller.rb
Railsのコントローラーの命名規則では、コントローラー名の最後のWordの複数形が優先されますが、厳密ではありませんrequired(例ApplicationController
)。
たとえば、ClientsController
はClientController
よりも好まれ、SiteAdminsController
はSiteAdminControlle
rまたはSitesAdminsController
よりも好まれます。
この規則に従うことにより、各:path
または :controller
、およびアプリケーション全体でURLおよびパスヘルパーの使用法の一貫性を維持します。
複数形を使用する方がいいと思うので、単一のリソース、つまりユーザーを処理するコントローラーがある場合は、URLに/ userという名前を付けることができます。
ヘルパーを使用すると、すべてのコントローラーにヘルパーが必要になることはほとんどなく、複数のコントローラーを使用してアプリケーションヘルパー全体に散らばらせることができるヘルパーメソッドがあり、layout_helperまたはany他の適切な名前のファイル。