2011-12-19 10 views

答えて

0

はい、命名規則に従うと、レールが他の名前を生成するために使用するだけでなく、他の宝石も同様に役立ちます。

具体的には、あなたのモデルが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レコードを扱うと理解されます。

+0

あなたの提案 –

2

いいえ、従来の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です。