我正在使用 Rails 3.2 和 devise 2.0,而且我对 Rails 还很陌生。
要求
我想实现以下目标:
- 有 2 个或更多“用户”模型,例如。会员、客户、管理员
- 所有型号共享一些必填字段(例如电子邮件和密码)
- 每个模型可能有一些独特的字段(例如仅适用于客户的公司)
- 某些字段可能是共享的,但没有相同的验证(例如,名称对于客户来说是必需的,但对于会员来说是可选的)
- 注册过程中必须填写所有字段,因此表格有所不同
- 登录表单应该是唯一的
可能的解决方案
我在 StackOverflow 上搜索了很长一段时间,但对我来说似乎没有什么是正确的(我是一个 Java 人,抱歉:),现在我很困惑。提出了两种解决方案:
单一设备用户
这是最常见的答案。只需创建默认设备用户并创建会员-->用户和客户-->用户之间的关系。
我关心的是如何为每个模型实现定制的注册流程?我尝试了不同的事情,但最终都一团糟!
多个设备用户
这解决了自定义注册过程,对我来说似乎是正确的,但独特的登录表单是一个障碍。我在 SO 上找到了答案(设计 - 从两个模型登录)建议重写 Devise::Models::Authenticatable.find_for_authentication(conditions)。
这看起来很复杂(?),因为我是 Rails 新手,我想知道这是否可行?
谢谢你的建议!
欢迎加入 Java 家伙 =),我希望您会喜欢 Rails 世界。
简而言之,要解决您的问题,您有两种解决方案:
- 为每个用户在数据库中创建一个表和相应的模型。
- 在数据库中创建一个表,并为每个用户类型创建一个模型。这称为单表继承 (STI)。
选择哪一个?
这取决于角色的共同属性。如果它们几乎很常见(例如都有姓名、电子邮件、手机等)并且一些属性不同,我强烈推荐 STI 解决方案。
性传播感染怎么办?
1.使用命令简单地创建devise用户模型和表rails generate devise User
2. 添加一个名为type
使用迁移将字符串数据类型迁移到数据库中的用户表。
3. 为每个用户类型创建一个模型(例如rails g model admin
)
4.使Admin类继承自用户模型
class Admin < User
end
就这样,你就完成了 =) ... Yupeee
要创建管理员,请运行命令Admin.create(...)
其中点是管理属性,例如电子邮件、姓名……
我认为这question也可以帮助你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)