[英]Limiting download_links for ActiveAdmin based on AdminUser model
我試圖基於“限制”字段限制誰可以訪問csv / json / ...在ActiveAdmin中導出。 我想a)隱藏鏈接,b)如果路徑仍然被命中,則什么也不返回
我嘗試了以下方法:
index downloads_links: !current_admin_user.limited? do
# ...
end
以及
csv do
return if current_admin_user.limited?
# ...
end
我也曾短暫地嘗試使用procs和lambda,但這可能不是這里的解決方案?
似乎都無法正常工作,並分別給我在ActiveAdmin :: DSLResource和ActiveAdmin :: CSVBuilder上的nomethoderrors
歡迎任何提示,謝謝
我能夠通過一個簡單的猴子補丁來實現這一目標,但是我使用的是康康舞。 康康助手方法“可以嗎?” 工作正常,但我沒有測試“ 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.