如果我想构建一个包含两种不同类型用户的Rails应用,请假设一种类型称为播放器,另一种类型是所有者 ,对应用程序进行建模的最佳和最强大的方法是什么?
需要考虑的事项:
我考虑过的不同方法:
使用cancancan
gem ,但是似乎 strong>想要创建一个用户/管理层级方法,而不是如果你是一个播放器,那么你可以看到这些页面并执行这些操作,但是所有者不能,反之亦然。几乎就像将应用程序分成两部分一样。 cancancan
似乎会将所有者视为"具有额外权限的玩家",而不是完全不同的权限。
使用单独的登录和注册表单创建单独的模型,这似乎是一场等待发生的灾难。 Players 表与 Owners 表之间的一个小混淆,特别是主键,这将是一个人们可能最终登录到错误的世界帐户。
为帐户模型创建多态或has_one关系,到目前为止,这似乎是最好的方法。如果我创建了一个多态帐户模型,我可以存储不同类型的播放器 / 所有者,但是如何比较所有类型的登录凭据?
我一直试图在这个问题上找到关于如何将其映射出来的事情,并且很惊讶没有找到关于如何在不使用Devise 的情况下执行此操作的信息。如果有人有任何良好的链接,他们可以指出我也解决这个问题(没有设计),请留下你的答案!感谢。
答案 0 :(得分:0)
我建议一个User
类,其type
属性确定用户是Player
还是Owner
(单表继承)。这样您就可以将注册逻辑保存在一个位置,但可以根据用户的类自定义表单。
必须有cancancan
的替代方案来帮助您做您想做的事情,或者您可以自己实施帮助:
def can_access_control_panel?
current_user.is_a?(Owner)
end
答案 1 :(得分:0)