建立一个小型预订网站。有users
(登录并使用该网站的人),guests
被分配到rooms
。 users
可以是(是?)guests
,但并非所有guests
都是users
。
我最初的倾向是在belongs_to
&之间建立has_one
/ user
关系。 guest
但也许STI会在这里工作?作为用户和&访客有first_name
,last_name
,email
等。设置模型是否有意义,例如user
和guest
都从{继承{ {1}}?
我将推出自己的简单身份验证,因此person
,user
和password_digest
可能只有roles_mask
个字段。
有什么建议吗?我只是问,因为在身份验证,授权和安全方面,事情会变得棘手。诸如此类的东西。
欣赏任何想法/提示!
答案 0 :(得分:0)
这里最简单的方法是按照建议坚持STI。例如,您可以设置单个devise
User
模型,并使用CanCan
应用ACL,并为您的用户定义角色。
CanCan
的能力规范将决定哪些资源可以访问,哪些资源不可访问。这里的优点是用户可以是访客,并且根据您设置ACL的方式,可以阻止访客admin
访问。
然而,Jesse建议使用两个独立的Devise模型也是一个好主意,因为这可以确保他们的会话是分开的。这样可以更直接地实现,因为您可以相应地设置特定于用户的ACL和特定于访客的ACL。