活动管理员有条件地显示csv链接

时间:2014-08-04 14:36:42

标签: ruby-on-rails activeadmin

我使用带有活动管理员6.0的rails 3.2,我对活跃管理员用户,管理员和代理商有不同的角色,但我不希望代理能够导出数据csv。

如何根据用户是代理还是管理员隐藏所有下载链接?

5 个答案:

答案 0 :(得分:3)

你试过这个吗? Customizing Download Links

用proc可以用吗?方法

答案 1 :(得分:0)

你需要铁路link_to_if helper仅在条件为真时才会显示您的链接

link_to_if(condition, name, options = {}, html_options = {}, &block)

<%= link_to_if(@current_user.nil?, "Login", { controller: "sessions", action: "new" }) %>
# If the user isn't logged in...
# => <a href="/sessions/new/">Login</a>

答案 2 :(得分:0)

这对我有用......

我不得不按照以下方式修补ActiveAdmin:

# config/initializers/activeadmin_cancan.rb
module ActiveAdmin
  module ViewHelpers
    module DownloadFormatLinksHelper

      def build_download_format_links(formats = self.class.formats)
        if current_admin_user.can_download_resources?       
          links = formats.collect do |format|
            link_to format.to_s.upcase, { :format => format}.merge(request.query_parameters.except(:commit, :format))
          end
          div :class => "download_links" do
            text_node [I18n.t('active_admin.download'), links].flatten.join("&nbsp;").html_safe
          end
        end
      end

    end
  end   
end

只要您的用户使用上述内容即可。下载csv文件的能力不依赖于资源(例如,一些用户可以下载Foo,其他用户可以下载Bar)或格式化。

答案 3 :(得分:0)

使用当前的activeadmin版本(1.1.0),您可以执行以下操作:

# file: app/admin/user.rb
index download_links: proc { authorized?(:export_csv, User) ? [:csv] : false } do
  # ...
end

并在您的能力文件中(例如CanCan):

class Ability
  include CanCan::Ability

  def initialize(admin)
    can :export_csv, User if admin.superadmin?
  end
end

答案 4 :(得分:0)

以下内容在active_admin.rb

中为我工作
config.namespace :admin do |admin|
  # authorized? is an ActiveAdmin method that delegates to CanCan's can? method
  admin.download_links = proc { authorized?(:view_download_links, collection.klass) }
end

然后,您只需要在ability.rb中定义一个功能(将MyModelClass替换为您的模型名称):

class Ability
  include CanCan::Ability

  def initialize(user)
    ... 
    can [:view_download_links], MyModelClass
  end
end

使用activeadmin 1.4.2和cancancan 2.3.0