要求
>基于Basecamp子域的站点.
>拥有3个“用户”型号. 1.管理员(超级用户)2.作者(每个子域都有自己的站点)&订阅者(阅读网站).
>作者:注册是普通的用户名/密码组合,但需要得到管理员的批准.他们的注册表格将有子域名.
>订阅者:通过邀请电子邮件进行注册.
>需要单独登录&登记表格
可能的解决方案
我一直在寻找和找到了一些解决方
> 3个独立模型:
$rails generate devise admin $rails generate devise author $rails generate devise subscriber
但是这会产生以下错误
$rails生成设计作者
/home/gaurish/.rvm/gems/ruby-1.9.3-p286-perf/gems/devise-2.1.2/lib/devise/rails/routes.rb:443:in’pree_no_devise_method_error!’:管理员没有回复’设计’方法.这通常意味着您尚未加载ORM文件或者加载太晚.要修复它,请确保在’config / initializers / devise.rb’中或在’config / application.rb’中的应用程序定义之前需要’devise / orm / YOUR_ORM'(RuntimeError)
class Admin < User; end class Author < User; end class Subscriber < User; end
在这里,我不确定这将如何处理不同的登录/注册工作流程.订阅者示例我计划使用devise_invitable创建邀请.管理员不需要根据子域进行作用,这与作者和作者不同.订户.
这看起来很复杂吗?我希望我能够很好地解释.
解决方法
有一种Gem提供这种称为Rolify的功能,可以在https://github.com/EppO/rolify找到
这将允许您指定哪些用户在哪个角色中并根据您的需要更改它们,所有这些都来自一个现有模型.
将角色附加到用户模型后,您可以覆盖Devise的注册控制器以检测角色并呈现不同的模板等.您可以通过以下方式执行此操作:
>运行rails生成设计:视图将视图从Devise gem解压缩到您的项目中
>创建自己的注册控制器:
# app/controllers/registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def new super # Add logic here to detect Role and display different forms end def create super end def update super end end
>在routes.rb文件中添加正确的设置,告诉Devise使用新的控制器:
# app/config/routes.rb devise_for :users,:controllers => {:registrations => "registrations"}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。