感谢阅读。
我正在使用Devise和Rails 4.我想添加多个用户模型(admin,usertype1,usertype2),以便它们从主用户模型继承。我搜索了很多帖子并得出结论,我可以使用CanCan,我不想要,或者我可以使用单表继承。
我看到的方法是将类型字符串列添加到我使用Devise创建的主用户模型中。我还需要从父节点扩展每个子类,如下所示:
class Admin < User
end
class Usertype1 < User
end
class Usertype2 < User
end
我的问题是:接下来我该怎么办?我怎么知道如何访问类型列?我是否还需要覆盖 current_user 辅助方法的设计控制器,以便我可以使用 current_admin ?
再次感谢。
答案 0 :(得分:3)
我不确定这真的回答了原来的问题。我正在尝试为Devise设置多个会话控制器,看起来它确实需要这个用例的多个模型。当我有一个工作版本时会回复。
答案 1 :(得分:1)
您也可以使用easy_roles gem。它可以在github上找到。此gem为您的不同用户角色提供了一个位掩码解决方案。您只需拥有一个模型,例如User,此模型将获得属性“role”。只需查看github上的文档。 Devise + easy_roles + CanCan是一个非常好的设置,在我看来非常方便。我经常使用它。
链接到github:https://github.com/platform45/easy_roles
答案 2 :(得分:0)
STI会为您提供current_admin
,current_user1
和current_user2
设计方法。
在application_controller.rb
中,创建一个自定义current_user
方法,如下所示:
def current_user
if current_admin
current_admin
elsif current_user1
current_user1
else
current_user2
end
end
helper_method :current_user
您需要在routes.rb和自定义sessions_controller.rb上进行一些工作。请在此处查看已接受的答案Rails: Using Devise with single table inheritance