我想在我的Rails应用上为我的活动管理页面创建两个单独的管理员登录。一个登录应该具有读/写访问权限,另一个应该只具有读访问权限。有没有一种简单的方法可以在主动管理中实现它?
答案 0 :(得分:0)
我能想到的一个非常简单的方法,如果你只有两个管理员登录,那就是使用activeadmin authorization adapters
所以你可以尝试类似的东西 (请注意,这是一个非常简单的示例,并且尚未经过测试,请查看文档以获得更好,更清晰的示例,如果有任何错误,我会提前道歉!)
# app/models/only_admins_authorization.rb
class OnlyAdmins < ActiveAdmin::AuthorizationAdapter
def authorized?(action, subject = nil)
# Only let loginA create, update and delete
if action == :update || action == :destroy || action == :create
user.username == 'loginA' # check to see if current_user is loginA
# If it's just read, let loginA or login B do it
else
user.username == 'loginA' || user.username == 'loginB' # check to see if current_user is loginA or loginB
end
end
end
然后在您的视图中,您可以使用#authorized?
之类的
ActiveAdmin.register Post do
index do
column :title
column "" do |post|
if authorized?(:update)
link_to("Edit", admin_post_path(post))
end
end
end
end
但是,如果您的应用以管理员身份登录的次数超过两次且可能会增长,您可能需要考虑使用cancan gem并为您的用户创建角色,我相信activeadmin authorization adapters plays nicely with cancan
我希望这会有所帮助