我可以通过一个简单的猴子补丁来实现这一点,但我使用的是 cancan。cancan 辅助方法“可以吗?” 工作正常,但我没有测试'current_admin_user'。请尝试一下
module ActiveAdmin
module Views
class PaginatedCollection
def build_download_format_links(formats = self.class.formats)
params = request.query_parameters.except :format, :commit
links = formats.map { |format| link_to format.to_s.upcase, params: params, format: format }
unless current_admin_user.limited?
div :class => "download_links" do
text_node [I18n.t('active_admin.download'), links].flatten.join(" ").html_safe
end
end
end
end
end
end
upd:我已经尝试过使用 current_admin_user,它确实有效。
此外,如果您需要限制格式,您可以使用您的“有限”方法重新定义此模块的格式方法:
module ActiveAdmin
module Views
class PaginatedCollection
def formats
if current_admin_user.limited?
@formats ||= [:csv] # anything you need for limited users
else
@formats ||= [:csv, :xml, :json]
end
@formats.clone
end
end
end
end