gpt4 book ai didi

ruby-on-rails - 使用事件管理员进行范围界定 cancan

转载 作者:行者123 更新时间:2023-12-04 18:20:21 24 4
gpt4 key购买 nike

我如何在事件管理员和 cancan 中使用范围。
我有管理员用户并且那些与机构有(has_one)关系
和机构有很多简介
现在,当管理员用户登录时,我想显示所有具有相同机构的个人资料。

发现以下链接没有多大帮助。

http://activeadmin.info/docs/2-resource-customization.html#scoping_the_queries

最佳答案

如果你只是这样做,你会遇到问题吗?

# ability.db

def initialize(user)
case
# ...
when user.super_admin?
can :manage, :all
when user.admin?
can :manage, Profile, :institution_id => user.institution.id
#
# ...
end

这将允许: Profile.accessible_by(current_user) , 这里与 current_user.profiles 相同
class AdminUser
has_one :institution
has_many :profiles, :through => :institution
end

ActiveAdmin.register Profile do
scope_to :current_user #here comes the variable which set in initializer
end

如果您希望 super 管理员访问所有帖子,可以使用 :association_method 选项
ActiveAdmin.register Profile do
scope_to :current_user, :association_method => :admin_profiles
end

# in class User
def admin_profiles
if super_admin?
Profile.unscoped
else
profiles
end
end

一个棘手的解决方案可以概括这一点,并使用委托(delegate)类作为代理来取消 super 管理员的所有模型的范围。我可以根据要求拼出。

关于ruby-on-rails - 使用事件管理员进行范围界定 cancan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com