2011-12-09 11 views
1

私のレール3アプリでは、私はhomeBaseというモデルを作っています。 この(コントローラ/モデル)のクラス名は、両方のhomeBaseです。コントローラ用に複数化されていません。しかし、ファイル名はhome_base_controllerとhome_base.rbになっていました。 コンパウンド名を持つこのモデルや他のモデルでは、パススルーが機能するようになっています。コントローラーを使用しようとするたびに、初期化されていないと言われます。 レールに複合語を名前として使用するための黒い魔法のルールがありますか?化合物モデル名の問題

+1

にする必要がありますが、通常の命名規則をフォローしていない何らかの理由はありますか? –

+0

私は、レールが要求するスキームであると考えているものを再実行する - モデルHomeBase(home_base)とコントローラHomeBases(home_base)。しかし、私は正しい道を進むことができません。 new_home_base_pathは失敗します。私はどのようにパスを参照しますか? – Adam

答えて

3

短い回答:はい。

長い答え:Railsは意見の骨組みであり、これらのことをどのように扱うべきかについて具体的な意見があります。関連するRailsの慣例のサンプルを示します。

クラス(モデル)の名前は、大文字のキャメルケースの単数です。あなたの場合、モデルはHomeBaseと呼ばれるべきです。

コントローラ(ルビークラス自体)も大文字のラクダケースとして定義されますが、参照モデルは複数です。あなたの場合、コントローラはHomeBasesControllerと呼ばれるべきです。

ファイル名は常に小文字のアンダースコア表記を使用します。あなたのケースでは、class HomeBase < ActiveRecord::Baseを保持しているファイルがapp/models/home_base.rbであるべきとclass HomeBasesController < ApplicationControllerを保持しているファイルがapp/controllers/home_bases_controller.rb

関連する問題