gpt4 book ai didi

ruby-on-rails - ActiveAdmin - 使用 current_admin_user 来过滤可用的操作

转载 作者:数据小太阳 更新时间:2023-10-29 08:28:21 25 4
gpt4 key购买 nike

我有这样一个活跃的管理资源:

ActiveAdmin.register Snippet do

menu label: "Text Snippets"

config.clear_sidebar_sections!

index download_links: false do
column :key if current_admin_user.developer?
column :description
column :contents
default_actions
end

form do |f|
f.inputs do
f.input :description
f.input :contents
end
f.buttons
end

end

请注意,在 index block 中,如果当前管理员用户是开发人员,我只会添加 key 列。我想将这种过滤应用于可用操作。

我尝试将其添加到资源定义的顶部:

actions current_admin_user.developer ? :all : :index, :edit

但是我在 current_admin_user 上得到了一个 NameError。出于某种原因,在配置 block 之外,事件管理员 current_admin_user 助手不存在。

那么,我该如何根据当前用户的权限过滤操作呢?

最佳答案

你必须使用一个过程...current_admin_user 只在应用程序运行时起作用,而不是在你声明你的类时..

例子..

action_item :only => [:edit], :if => proc { current_admin_user.developer? } do
#enter code here
end

您也可以为此使用 CanCan.. 并将 controller.authorize_resource 放在开头。为此检查 activeadmin 文档。

另一种方法是覆盖 ActiveAdmin Controller 中的 action_methods.. 就像这样

actions :all

controller do
def action_methods
if current_admin_user.developer?
super
else
super - ['show', 'destroy', 'new', 'create']
end
end
end

如果您有多个角色,这会很有效。

顺便说一句,你应该使用 developer? 而不是 developer (当然如果 developer 方法返回一个 bool 值,我怀疑)

更新

在 0.6+ 版本中,您应该坚持使用 CanCan,有关更多信息,请查看 activeadmin 文档 http://www.activeadmin.info/docs/13-authorization-adapter.html#using_the_cancan_adapter

关于ruby-on-rails - ActiveAdmin - 使用 current_admin_user 来过滤可用的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com