[英]Activeadmin: create scope on boolean field
您想要的是設置默認過濾器,所以這里是您需要在 ActiveAdmin 控制器中執行的操作
controller do
before_filter only: :index do
params[:q] = {is_private_eq: 0} if params[:commit].blank?
# or this might work for you
# params[:q] = {is_private: 0} if params[:commit].blank?
end
end
從您的代碼開始的最簡單的解決方案之一是將范圍設置為默認范圍:
scope ("public"){ |scope| scope.where(is_private: false) }, default: true
通過這種方式,您可以選擇列出所有照片對象或不同的范圍。
參考: Active Admin 文檔
您可以自定義資源檢索和默認范圍http://activeadmin.info/docs/2-resource-customization.html所以我建議下一步
ActiveAdmin.register Photo do
controller do
def scoped_collection
super.where(is_private: false)
end
end
end
這將為所有用戶隱藏私人照片。
您也可以向scoped_collection
添加自定義邏輯
controller do
def scoped_collection
if user.super_admin?
super
else
super.where(is_private: false)
end
end
end
ActiveAdmin 還為您提供了開箱即用的集成,例如pundit
和cancan
http://activeadmin.info/docs/13-authorization-adapter.html#using-the-cancan-adapter
http://activeadmin.info/docs/13-authorization-adapter.html#using-the-pundit-adapter
所以現在是您開始在此類情況下使用授權的好機會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.