如何根据用户在活动管理员中的角色显示范围?
How to display scopes based on the role of the user in active admin?
我遇到一个错误:
undefined local variable or method `current_admin_user' for #<ActiveAdmin::ResourceDSL
如何在此处访问 current_admin_user 对象?
ActiveAdmin.register Job do
def quick_filters
if current_admin_user.super_admin?
[:all, :draft, :scheduling, :rejected]
else
[:all, :scheduling, :rejected]
end
end
quick_filters.each do |a|
scope a
end
end
这是有效的:
controller do
def scoped_collection
@jobs = if current_admin_user.super_admin?
super.includes :trip, :car, :concierge, :creator, :job_template
else
super.where(concierge_id: current_admin_user.id).includes :trip, :car, :concierge, :creator, :job_template
end
end
end
我认为这应该可行:
ActiveAdmin.register Job do
scope :all
scope :draft, :if => proc { current_admin_user.super_admin? }
scope :scheduling
scope :rejected
end
用于设置范围的 DSL 在服务器启动时进行评估,无法访问基于请求周期的数据(如登录用户)。为了解决这个问题,ActiveAdmin 提出了用 proc
包装代码的概念,以便将封闭的代码评估推迟到 request-cycle-time.
祝你好运!
我遇到一个错误:
undefined local variable or method `current_admin_user' for #<ActiveAdmin::ResourceDSL
如何在此处访问 current_admin_user 对象?
ActiveAdmin.register Job do
def quick_filters
if current_admin_user.super_admin?
[:all, :draft, :scheduling, :rejected]
else
[:all, :scheduling, :rejected]
end
end
quick_filters.each do |a|
scope a
end
end
这是有效的:
controller do
def scoped_collection
@jobs = if current_admin_user.super_admin?
super.includes :trip, :car, :concierge, :creator, :job_template
else
super.where(concierge_id: current_admin_user.id).includes :trip, :car, :concierge, :creator, :job_template
end
end
end
我认为这应该可行:
ActiveAdmin.register Job do
scope :all
scope :draft, :if => proc { current_admin_user.super_admin? }
scope :scheduling
scope :rejected
end
用于设置范围的 DSL 在服务器启动时进行评估,无法访问基于请求周期的数据(如登录用户)。为了解决这个问题,ActiveAdmin 提出了用 proc
包装代码的概念,以便将封闭的代码评估推迟到 request-cycle-time.
祝你好运!