ruby-on-rails - 違い - rails ルーティング




Railsの単数または複数のコントローラ名とヘルパー名 (6)

コントローラーやヘルパーに特異な名前を使用することに不利な点はありますか? これには何も依存していないようです。 少なくとも私の限定された実験によれば、ヘルパーは対応するコントローラとして単数形対複数形について同じ選択をする必要はありません。 本当?


Railsのガイドには、完全な説明がありますthis : this


Railsのコントローラの命名規則は、厳密には要求されていないが (例えば、 ApplicationController )、コントローラの名前の最後の単語の複数化優先している。

たとえば、 ClientsControllerClientControllerよりSiteAdminsControllerれ、 SiteAdminsControllerSiteAdminControlle rまたはSitesAdminsControllerよりもSitesAdminsControllerれます。

この規約に従えば、 :path :controller:controller :pathを修飾することなく、デフォルトのルートジェネレータ(例えば、リソースなど)を使用することができ、アプリケーション全体でURLヘルパーとパスヘルパーの使用を一貫して保ちます。

リファレンス: コントローラ命名規則 - Rails Doc


コントローラに複数の名前を使用することは単なる慣例にすぎません。

複数の名前は通常、より自然に聞こえます(特に、特定のモデルに直接接続されているコントローラの場合:User - > Usersなど)。ただし、必要なものを使用できます。

ヘルパーの場合、すべてのヘルパーはデフォルトですべてのコントローラーで使用できます。したがって、技術的には、ヘルパーの名前付けの方法はまったく重要ではありません。 コントローラーのヘルパー関数をコントローラーと同じ名前のヘルパーに保持するのはもう一つの規則です。


コントローラー名に単数を使用すると気分が良くなる


実行時にそのモデルの1つ以上のインスタンスが存在するかどうかに関わらず、1つのコントローラが1つのモデルを処理するのはRailsの規約です。 しかし、コントローラ(および関連するビュー)が特定のモデルに関連付けられていない、より複雑な機能セットを扱うRailsアプリケーションを持つことができます。 この場合、自動複数化は意味をなさない。

私が現在取り組んでいるRailsアプリケーションは、このカテゴリに適合します.Railsは、私が1つの場所で単数形として定義した識別子が、他の場所で複数形で使用されることを期待していることに気づいています。 たとえば、 config/routes.rb次のようなものを定義することができます。

  resource :dashboard, :only => [:show]

コントローラのDashboardControllerに、アプリケーションの特定の側面に関する要約情報を表示し、複数のデータベーステーブルから情報を収集したいとします。 ここでは、 Dashboardはアプリケーションのモデルを指していないので、コントローラの名前をDashboardsControllerするのは変です。

私はこの答えで自動多元化の刺激に良い解決策を見出した。 つまり、ファイルconfig/initializers/inflections.rbを編集し、自動的に複数化したくない単語をこの定義に追加します:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w( dashboard foo bar baz )
end

複数形を使用するほうがうまくいくでしょう。そして、あなたは、単一のリソース、つまりuserを扱うコントローラを持っていれば、あなたはまだURL /ユーザの名前をつけることができます。

ヘルパーでは、多くの場合、すべてのコントローラのヘルパーを用意する必要はなく、ヘルパーメソッドを使用して複数のコントローラを使用することもできます。アプリケーションヘルパーを使用すると、レイアウトヘルパーや任意のヘルパー他のよく名付けられたファイル。





naming-conventions