ruby-on-rails - 为应用程序和 CMS 使用单用户模型时如何限制对 activeadmin 仪表板的访问?

标签 ruby-on-rails ruby cancan activeadmin

我为 adtiveadmin 和应用程序本身使用单个 User 模型。我找到了 solution使用 CanCanrolify 限制对 activeadmin 模型页面的访问。请注意,在上面的示例中,他们使用常量来创建角色,而我使用 rolify gem。不过,我可以轻松访问 activeadmin 的仪表板。当我尝试访问 CMS 中的模型时,我被重定向到应用程序的根页面,并显示一条错误消息,指出我无权访问此页面。

有没有办法限制对 activeadmin 的仪表板和模型的访问,以便我被重定向 到 activeadmin 的授权页面?

这是我的 active_admin_resource 初始化器

#config/initializers/active_admin_resources.rb
ActiveAdmin::ResourceController.class_eval do
protected
  def current_ability
    @current_ability ||= AdminAbility.new(current_user)
  end
end

能力等级定义如下:

#app/models/admin_ability.rb
class AdminAbility < ActiveRecord::Base
include CanCan::Ability

def initialize(user)
  user ||= User.new
  if user.has_role? :admin
    can :manage, :all
  end
end

结束

Activeadmin 的模型是这样定义的:

#app/admin/some_model.rb
ActiveAdmin.register SomeModel do
  controller.authorize_resource
end

最后activeadmin的路由定义如下:

#config/routes.rb
Rallypoint::Application.routes.draw do
  ActiveAdmin.routes(self)
end

最佳答案

.. i'm redirected to application's root page ..

大多数应用程序在其 ApplicationController 中都有一个 rescue_from(CanCan::AccessDenied),如维基页面 Exception Handling 中所述.

[I want to be] redirected to activeadmin's authorization page

尝试覆盖 activeadmin 中的 rescue_from

关于ruby-on-rails - 为应用程序和 CMS 使用单用户模型时如何限制对 activeadmin 仪表板的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362661/

相关文章:

ruby-on-rails - 在创建时使用 set_callback 进行 after_commit

jquery - 如何在没有响应的rails中测试jquery自动完成

ruby-on-rails - rails 3不为零

html - HAML Twitter Bootstrap 选项卡不能正常工作 Ruby on Rails

ruby-on-rails - Heroku 推送被拒绝,无法编译 Ruby/disabledeploys 应用程序

ruby - Rubocop 只检查修改后的行

ruby-on-rails-3 - cancan: "manage"和 "read, create, update and destroy"组合的区别?

ruby - Watir-Webdriver 如何处理加载失败的页面并继续测试

ruby-on-rails - CanCan 和多态关联(Eager Loading 错误)

ruby-on-rails - 使用 Pundit gem 导出所有用户策略