ruby-on-rails - Rails 3 事件管理员。根据 CanCan 权限隐藏按钮

标签 ruby-on-rails ruby cancan activeadmin

我让 ActiveAdmin 和 CanCan 一起工作。我已经设置了管理员和客户权限。

现在我想根据 CanCan 设置的权限隐藏“新建”、“编辑”和“删除”按钮,但以下行给我错误...

config.clear_action_items! :if => proc{can? (:destroy, Shipment)}

这个也是

:if => proc{ can?(:destroy, Shipment)}, actions :all, :except => [:new, :create, :update, :edit, :destroy]

最佳答案

我使用这个猴子补丁在显示按钮之前检查权限

module ActiveAdmin
  class Resource
    module ActionItems

      # Adds the default action items to each resource
      def add_default_action_items
        # New Link on all actions except :new and :show
        add_action_item :except => [:new] do
          if controller.action_methods.include?('new') and can? :create, active_admin_config.resource_class
            link_to(I18n.t('active_admin.new_model', :model => ''), new_resource_path,
             :class => "new-link"
            )
          end
        end

        # Edit link on show
        add_action_item :only => :show do
          if controller.action_methods.include?('edit') and can? :update, active_admin_config.resource_class

             link_to(I18n.t('active_admin.edit_model', :model => ''), edit_resource_path(resource),
             :class => "edit-link"
            )


          end
        end

        # Destroy link on show
        add_action_item :only => :show do
          if controller.action_methods.include?("destroy") and can? :destroy, active_admin_config.resource_class

             link_to(I18n.t('active_admin.delete_model', :model => ''),
              resource_path(resource),
               :class => "delete-link" ,
              :method => :delete, :data => {:confirm => I18n.t('active_admin.delete_confirmation')})

          end
        end
      end
    end
  end
end

关于ruby-on-rails - Rails 3 事件管理员。根据 CanCan 权限隐藏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934892/

相关文章:

ruby-on-rails - Rails 范围 : Select Distinct Title With Values

ruby-on-rails - 导出rails数据库数据的最佳方式

mysql - 组与用户的直接关联

ruby-on-rails - Ruby/Rails 元编程 : generating helper methods on the fly

ruby - 将 Gitlab 从 9.3.7 更新到 9.3.8 安装 re2 时出错

ruby-on-rails - 在运行 RSpec 测试时绕过 CanCan::AccessDenied

ruby-on-rails - 如何使用 RSpec 正确测试 CanCan 能力

ruby-on-rails - 声明不同用户角色的最佳实践?

ruby - 如何测试带有参数的创建 Action 的康康舞能力?

html - 我的 post.html.erb 文件中的数据检索错误