すべての管理アクションをアプリケーション内の管理名前空間の下に配置し、承認に CanCanCan などの gem を使用することを強くお勧めします。
たとえば、Userオブジェクトを削除するアクションは名前空間のUsersController下にあります。Adminコントローラーは基本的に次のように定義されます。
class Admin::UsersController < Admin::BaseController
def destroy
user = User.find(params[:id])
user.destroy
redirect_to admin_users_path
end
end
ここAdmin::BaseControllerで参照されているのは、管理名前空間のベースを提供するコントローラーです。次のように、ユーザーを承認する必要があります。
class Admin::BaseController < ApplicationController
before_filter :authenticate_user!
before_filter :authorize_admin
def authorize_admin
authorize! :manage, :all
end
end
ヘルパーはauthorize!によって提供されCanCanます。クラスのセットアップに関して、 CanCan wiki が既にカバーしていることは繰り返しません。AbilityCanCan は、著者による素晴らしいスクリーンキャストでも取り上げられています。
Abilityこのブール値フィールドをチェックしてから、CanCan に承認を処理させる必要があるのは、このクラス内です。
実際にこの new にルーティングするには、ファイルAdmin::UsersController内でこれを定義します。config/routes.rb
namespace :admin do
resources :users
end
CanCanCan を使用したくない場合は、Punditもあります。