有没有一种简单的方法在活动管理员中实现读写权限?

时间:2014-03-26 23:33:24

标签: ruby-on-rails ruby activeadmin

我想在我的Rails应用上为我的活动管理页面创建两个单独的管理员登录。一个登录应该具有读/写访问权限,另一个应该只具有读访问权限。有没有一种简单的方法可以在主动管理中实现它?

1 个答案:

答案 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

我希望这会有所帮助