如何解决如何根据活动管理员中用户的角色显示作用域?
我遇到错误:
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,: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,: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
包装代码,以便将随附的代码评估推迟到请求周期。
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。