0
我在我的Rails項目中使用CanCan
gem進行授權。如何授權使用CanCan功能的控制器中的操作?
的ability.rb
文件看起來是這樣的:
class Ability
include CanCan::Ability
def initialize(user)
@user = user || User.new
send @user.role.name.underscore unless @user.role.nil?
end
private
def partneradmin
can :manage, :all
cannot :access, User, role_id: @user.role.id
cannot :manage, Watchlist
can :manage, Attachment
end
end
我有另一個控制器controllers/admin/users_controller.rb
它看起來像:
class Admin::UsersController < AdminController
load_and_authorize_resource
respond_to :html, :json
def index
end
def new
end
end
現在我想限制訪問Admin::UsersController#index
行動,以便partneradmin
用戶無法訪問那個行動。我試圖添加cannot :access, Admin::UsersController
,但沒有運氣,因爲我仍然可以訪問Admin::UsersController#index
頁面。
請注意,我不想限制所有用戶資源的訪問權限。例如我有PartnerAdmin::UsersController#index
,我不想限制它,但僅限於Admin::UsersController#index
(基於控制器而不是型號)。
什麼是rails版本? 'rails -v' – Fresz
@Fresz Rails 4.1.1。 –
當你擁有'用戶'對象時,你怎麼能確定用戶是否是'partneradmin'?我有一個'user.is_partneradmin?'方法嗎?它是數據庫中的布爾字段嗎? –