[英]Rails Single table inheritance (STI) with the User model
建立一个小的预订网站。 有users
(登录并使用该站点的用户),并且有被分配到rooms
guests
。 users
可以是(是?) guests
但并非所有guests
也是users
。
我最初的belongs_to
在user
和guest
之间建立一个belongs_to
/ has_one
关系,但STI可能在这里起作用? 作为用户和来宾拥有first_name
, last_name
, email
等,是否有必要设置模型以使user
和guest
都继承自person
?
我将进行自己的简单身份验证,因此user
可能仅有的其他附加字段是password_digest
, roles_mask
和icon_color
。
有什么建议么? 我只是问,因为在身份验证,授权和其他方面可能会变得棘手。
感谢任何想法/提示!
如建议的那样,这里最简单的方法是坚持STI。 例如,您可以设置单个devise
User
模型,并在CanCan
应用ACL并为用户定义角色。
CanCan
的能力规格将确定哪些资源可访问,哪些资源不可访问。 这样做的好处是用户可以成为访客,并且根据您设置ACL的方式,可以防止访客具有类似admin
访问权限。
但是,Jesse建议使用两个单独的Devise模型也是一个好主意,因为这可以确保它们的会话是分开的。 实施起来更直接,因为您可以相应地设置特定于用户的ACL和来宾特定的ACL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.