適切な権限で設定しようとしているグループリソースがあります。
私が実装しようとしている承認ロジックは次のとおりです。
- グループメンバーのみが自分のグループを表示できるようにする必要があります。
- 管理者は、任意のグループを表示したり、他のアクションを実行したりできます。
グループコントローラーで次のbefore_filterステートメントを使用してこれを実行しようとしています。
before_filter :signed_in_user
before_filter :correct_user, only: :show
before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]
Correct_userは、グループメンバーのみがグループを表示できることを確認したので機能します。ただし、私がしたいのは、admin:show句でこれをオーバーライドして、管理者が任意のグループを表示できるようにすることです。現在、それは機能していません。ここで、フィルターの順序とオプションに問題があると思います。
誰かが私がどこで間違っているのか教えてもらえますか?
編集
Amarのリクエストに従ってメソッドコードを追加します。
private
def correct_user
# User has to be a member to view
@group = Group.find(params[:id])
redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end