私のプロジェクト名は詰まらないので、私のモデルとコントローラーの名前は次のようになります:Clog::User
Clog::Userscontroller
。レールプロジェクトでは、次の命名規則が必要ですか?
この命名規則は必須ですか。
私のプロジェクト名は詰まらないので、私のモデルとコントローラーの名前は次のようになります:Clog::User
Clog::Userscontroller
。レールプロジェクトでは、次の命名規則が必要ですか?
この命名規則は必須ですか。
はい、命名規則に従うと、レールが他の名前を生成するために使用するだけでなく、他の宝石も同様に役立ちます。
具体的には、あなたのモデルがUserと指定されている場合、コントローラにUserControllerという名前を付ける必要があるかどうかを尋ねるかもしれません。それはまったく必要ではないし、あなたの目的に合っていれば、他のものと呼ぶかもしれない。この場合
が、おそらくそうのようないくつかのコントローラを作成することになるでしょう:ユーザーのために
My::AccountController # for e.g.. /my/account
Admin::UsersController # for e.g. /admin/users/1
を、あなたは「あなたのアカウント」として、独自のユーザー・レコードを参照するので、これはより多くの意味があります。ただし、管理者の視点はユーザーレコードを管理することです。コントローラーに名前を付けて、別のルートでそれを提供することもできます。あなたのルートファイルで、これを行うかもしれません:
namespace :admin do
resources :users, :path => "user-accounts"
end
あなたのモデル名はコントローラー名と一致する必要はありません。それらは関連付けによって同様に名前が付けられます:UserControllerはUserレコードを扱うと理解されます。
いいえ、従来のRailsプロジェクトでは、そうする必要はありません。あなたのモデルやコントローラの名前を通常の方法(UserやUsersControllerなど)にするだけです。
もう1つのことは、プロジェクトの規模が大きくなると、モデルをサブモジュールに整理する必要があるかもしれないということです。そうするための1つのアプローチは、例えばhereまたはhereのように、アプリの懸念事項でモデルを拡張することです。
コントローラーを整理するためとして、1つのアプローチはそうと同じように、あなたは、あなたのApplicationControllerにに含まれ、libディレクトリにモジュールを作成することです:lib/authentication.rb
で
:
app/controllers/application_controller.rb
で
module Authentication
def self.included(base)
base.send :before_filter, :login_required
base.send :helper_method, :current_user, :logged_in?
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token]) if cookies[:remember_token].present?
end
#...
end
class ApplicationController < ActionController::Base
include Authentication
#...
end
これを機能させるには、
を追加する必要があります。あなたがRailsのエンジンとしてあなたのRailsプロジェクトをビルドすることを計画している場合、あなたのconfig/application.rb
ファイル
から
config.autoload_paths << "#{config.root}/lib"
はしかし、あなたはいくつかの命名規則をフォローしたいことがあります。 Rails Engineの良い例はforemです。
あなたの提案 –