我想基于current_user和模型实体的属性来限制Active Admin中可管理模型实体的列表。
例如:用户(具有管理员权限)具有team_id == 2且应该只能管理 team_id == 2
的任务编辑:我试图使用范围,但我不知道如何使用这个条件:
user.team_id == task.team_id
Active Admin可以吗?
感谢您的时间。(这是我的第一篇文章,请告诉我是否可以改进我的问题)
答案 0 :(得分:0)
您最有可能尝试定义不同级别的访问和授权。您应该查看CanCan gem:https://github.com/ryanb/cancan
ActiveAdmin解释了如何在此处实施它:http://www.activeadmin.info/docs/13-authorization-adapter.html#using_the_cancan_adapter
然后在你的情况下你可以定义一个ability.rb,如:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
case user.team_id
when 1
can :manage, Post
when 2
can :manage, Post
can :manage, Task
when 3
can :manage, :all
end
can :read, ActiveAdmin::Page, :name => "Dashboard"
end
end
我建议定义一个role
属性,而不是使用team_id
,但这只是用语义挑剔:)
希望它有所帮助!
答案 1 :(得分:0)
我终于找到了如何使用范围:
scope_to :current_user
并添加到用户模型:
has_many :tasks, through: :team