使用主动管理员cancan进行范围界定
如何使用活动管理员和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
如果您希望superadmin访问所有post,您可以使用: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
一个棘手的解决方案可以概括这一点并使用委托者类作为代理来取消所有模型的superadmins。 我可以根据要求拼出来。