继具有管理角色的用户或用户管理用户和管理面板之后,我想采用专家,因为它的策略优雅于应用程序。应用程序有一个用户模型和一个管理模型--一个用于客户,另一个用于工作人员。它也是多租的,尽管这不应该对问题产生很大的影响。
我也希望有一个单独的榜样,让客户混合和匹配他们自己的“标题”的角色,他们需要。这也不应该是非常困难的实现。
最困难的部分是对专家策略的支持,以支持两个不同的用户模型--用户(Customer)和管理员(Staff)。
是否应该使用pundit_user方法将Admin或User设置为pundit_user (基于通过current_user和current_admin_user提供的这些方法),还是存在另一种方法。我还没有找到关于这个用例的好文档(除了github短线)。
def pundit_user
if !current_admin_user.nil?
current_admin_user
elsif !current_user.nil?
current_user
else
nil
end
end发布于 2015-05-13 13:45:46
在我的应用程序的可公开访问部分中,使用了用户模型。默认的专家配置可以工作,因为pundit_user返回current_user。
在我的应用程序的管理部分,使用了Administrator模型。其中一个原因是管理员可以在模拟用户时保持登录(以查看他们在配置文件中看到的内容并帮助排除故障)。
在管理控制器中,pundit_user返回current_administrator。
在Rails管理中,当前用户设置为当前管理员:
config.authenticate_with do
warden.authenticate! :scope => :administrator
end
config.current_user_method(&:current_administrator)虽然我在Rails管理中不使用授权(所有管理员都有所有的权限),但是您应该能够使用rails_admin_pundit gem,因为它确实使用了
@controller.class.send(:alias_method, :pundit_user, :_current_user)
在Rails管理中定义为
def _current_user
instance_eval(&RailsAdmin::Config.current_user_method)
endhttps://stackoverflow.com/questions/30204729
复制相似问题