【发布时间】:2011-09-30 12:30:36
【问题描述】:
我正在编写一个交易系统,我有 3 个模型/角色:买家、卖家和管理员。我已经为每个模型生成了设计视图,但我想为它们使用相同的登录、忘记密码页面等,而不是维护 3 组视图,有没有办法做到这一点?
买家和卖家有相似的字段(名字、姓氏、电子邮件地址、电话等),是否可以将 STI 与设计一起使用,是否相当简单?目前我有 3 个没有继承的独立模型。
【问题讨论】:
标签: ruby-on-rails devise
我正在编写一个交易系统,我有 3 个模型/角色:买家、卖家和管理员。我已经为每个模型生成了设计视图,但我想为它们使用相同的登录、忘记密码页面等,而不是维护 3 组视图,有没有办法做到这一点?
买家和卖家有相似的字段(名字、姓氏、电子邮件地址、电话等),是否可以将 STI 与设计一起使用,是否相当简单?目前我有 3 个没有继承的独立模型。
【问题讨论】:
标签: ruby-on-rails devise
您可以简单地拥有一个带有 :role 属性的 User 模型,还可以通过 CanCan 或 decl_auth (gems) 实现一个简单的 ACL。这样他们都将通过同一会话登录等。 Devise 和 CanCan 是一种非常流行的方法,并且在网上和它们各自的 Github wiki 中都有很好的记录。
对于管理员,您可以修改验证以跳过额外的属性并将它们在数据库中保留为空白。
【讨论】:
current_user.buyer? 或 current_user.seller? 进行测试并加载不同的部分(例如)。
if current_user.role == 'buyer'等...