我有一個組資源,我嘗試使用適當的授權進行設置。正確用戶和管理員的多個before_filter語句
我想實現授權邏輯是這樣的:
- 只有小組成員應能查看他們的小組。
- 管理員可以查看任何組,並採取其他操作。
我試圖與該組控制器中執行以下語句的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子句來覆蓋此,以便管理員可以查看任何組。目前,這是行不通的。我猜我的過濾器訂購和選項有些問題。
有人能告訴我我哪裏出了問題嗎?
編輯
每阿馬爾的請求添加我的方法的代碼:
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
嘗試admin_user在過濾器之前過濾correct_user或在show action中爲管理員用戶和其他人制定條件 – Amar 2012-04-14 15:27:54
謝謝Amar。我試圖將admin_user過濾器放在correct_user上面,但沒有解決它。我可以把這個條件放在動作中,但是想看看是否有辦法用before_filter來做到這一點。 – pejmanjohn 2012-04-19 00:21:49
通過我上面寫的方式進行進一步檢查時,過濾器要求用戶既是管理員又是管理員,正確的用戶才能查看組。我希望它是或 – pejmanjohn 2012-04-19 17:17:40