【发布时间】:2015-07-24 03:28:46
【问题描述】:
继Rails_admin: Should I have admin_user or user with admin role to manage users and admin panel 之后,我想采用Pundit,因为它对应用程序的策略优雅。该应用程序有一个用户模型和一个管理员模型——一个用于客户,另一个用于员工。它也是多租户的,尽管这不会对问题产生太大影响。
我还希望有一个单独的角色模型,允许客户根据需要混合和匹配他们自己的角色“头衔”。这在实施中也不应该非常困难。
困难的部分是支持 Pundit 策略以支持两种不同的用户模型 - 用户(客户)和管理员(员工)。
我是否应该使用 pundit_user 方法将 Admin 或 User 设置为 pundit_user(基于这些通过 current_user 和 current_admin_user 的可用性)还是有其他方法。我没有找到关于这个用例的很多好的文档(short line on github 除外)。
def pundit_user
if !current_admin_user.nil?
current_admin_user
elsif !current_user.nil?
current_user
else
nil
end
end
【问题讨论】:
-
拥有 2 个模型显然应该是一个具有不同角色的模型,这使得这变得比必要的复杂。
-
@tirdadc 我从不同模型中得到的分离是可取的。了解您来自哪里,但保持不同的模型是我想要用来实现目标的方法。
标签: ruby-on-rails devise pundit