我试图限制谁可以根据字段'limited'访问ActiveAdmin中的csv / json / ...导出。我想a)隐藏链接并且b)如果路径无论如何都不会返回任何内容
我尝试了以下内容:
index downloads_links: !current_admin_user.limited? do
# ...
end
以及
csv do
return if current_admin_user.limited?
# ...
end
我也曾尝试使用过程和lambda,但这可能不是解决方案吗?
两者似乎都不起作用,并且分别在ActiveAdmin :: DSLResource和ActiveAdmin :: CSVBuilder上给我提供了nomethoderrors
欢迎任何提示,谢谢
答案 0 :(得分:1)
我能用一个简单的猴子补丁实现这一目标,但我使用的是康康。 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