すべての管理アクションをアプリケーション内の管理名前空間の下に配置し、承認に 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 が既にカバーしていることは繰り返しません。Ability
CanCan は、著者による素晴らしいスクリーンキャストでも取り上げられています。
Ability
このブール値フィールドをチェックしてから、CanCan に承認を処理させる必要があるのは、このクラス内です。
実際にこの new にルーティングするには、ファイルAdmin::UsersController
内でこれを定義します。config/routes.rb
namespace :admin do
resources :users
end
CanCanCan を使用したくない場合は、Punditもあります。