長い記事ですが、ある操作を管理者だけに制限する方法が以下に示されています。
Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう から引用。
...
リスト9.46 destroyアクションから管理者へのアクセスを制限するbefore_action。
class UsersController < ApplicationController
before_action :signed_in_user, only: [:index, :edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy
.
.
.
private
.
.
.
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end
この例では、自前で login/logout の処理を実装する方法が、もっと前の章で実装されています。
そして current_user.admin? メソッドは、管理者としてログインしているかを調べることができるようになっています。
before_action :admin_user, only: :destroy の行は、destroy のアクションに実行前に admin_user() を実行することを指示しています。
つまり、destory 操作は 管理者だけが実行できるようにしているのです。
login/logout 処理は devise といった gem を使って実装することもできます。
その場合は、admin_user() の実装を変更することで対応できます。
さらに言えば、管理者画面を作成するための gem もあります。
RailsAdmin | Railsで管理画面を自動生成
これらの情報をスタート地点として、自分が実装したい機能 / どの程度の手間をかけるかとの兼ね合いから 実装方針を決めるとよいと思います。
2014/09/04 04:35