我想禁止管理员查看用户的数据(该用户手动添加的数据)。管理员只能看到他从管理面板添加的数据。我正在使用cancancan gem和活动的admin gem。
这是apache.rb文件,在其中使用了cancancan:
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :manage, WebCred, user_passes: {user_id: user.id}
end
index do
selectable_column
id_column
column :email
column :current_sign_in_at
column :sign_in_count
column :created_at
actions
end
filter :email
filter :current_sign_in_at
filter :sign_in_count
filter :created_at
form do |f|
f.inputs do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
这是我活动管理员的文件。 我想禁止管理员看到用户手动添加的Webcred的密码[sic],同时允许管理员查看他添加的密码。
答案 0 :(得分:0)
您可以通过传递一个用于评估条件的块来添加新功能(当管理员不应该看到密码时,该块必须评估为true
)。
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
cannot :see_password, WebCred do |web_cred|
web_cred.password_created_by_user_himself? ###Your condition here
end
else
can :manage, WebCred, user_passes: {user_id: user.id}
end
end
然后,您可以在视图或控制器中使用can? :see_password, WebCred.find(:id)
来检查此功能。