首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有Rails +用户、管理和角色模型的专家

具有Rails +用户、管理和角色模型的专家
EN

Stack Overflow用户
提问于 2015-05-13 02:39:56
回答 1查看 2K关注 0票数 2

具有管理角色的用户或用户管理用户和管理面板之后,我想采用专家,因为它的策略优雅于应用程序。应用程序有一个用户模型和一个管理模型--一个用于客户,另一个用于工作人员。它也是多租的,尽管这不应该对问题产生很大的影响。

我也希望有一个单独的榜样,让客户混合和匹配他们自己的“标题”的角色,他们需要。这也不应该是非常困难的实现。

最困难的部分是对专家策略的支持,以支持两个不同的用户模型--用户(Customer)和管理员(Staff)。

是否应该使用pundit_user方法将Admin或User设置为pundit_user (基于通过current_user和current_admin_user提供的这些方法),还是存在另一种方法。我还没有找到关于这个用例的好文档(除了github短线)。

代码语言:javascript
复制
def pundit_user
  if !current_admin_user.nil?
    current_admin_user
  elsif !current_user.nil?
    current_user
  else
    nil
  end        
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 13:45:46

在我的应用程序的可公开访问部分中,使用了用户模型。默认的专家配置可以工作,因为pundit_user返回current_user

在我的应用程序的管理部分,使用了Administrator模型。其中一个原因是管理员可以在模拟用户时保持登录(以查看他们在配置文件中看到的内容并帮助排除故障)。

在管理控制器中,pundit_user返回current_administrator

在Rails管理中,当前用户设置为当前管理员:

代码语言:javascript
复制
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管理中定义为

代码语言:javascript
复制
def _current_user
  instance_eval(&RailsAdmin::Config.current_user_method)
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30204729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档