首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Rails中使用Devise时是否需要"Users“控制器

在Rails中使用Devise时是否需要"Users“控制器
EN

Stack Overflow用户
提问于 2014-04-05 17:45:28
回答 1查看 17.4K关注 0票数 21

我是Rails新手。我正在做一个小型的Rails4项目,试图提高我的技能。我正在松散地关注M.Hartl's tutorial

根据本教程,将构建自定义用户身份验证。但是,我想使用Devise进行用户身份验证。我是否仍然需要像本教程中那样拥有用户控制器?在哪些情况下,我应该在已经使用Devise的情况下使用/不使用用户控制器?

关于本教程,我是直接跳过控制器生成部分,还是必须将动作映射到Devise?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 05:52:01

如果您想要与正常的注册/更新过程分开管理用户,则只需要一个用户控制器。我有一个用户控制器,以便管理员可以管理(创建,编辑,更新,删除)用户独立于正常的设备注册/更新过程。

与devise的冲突可能是因为您的路由文件中有用于设置devise的devise_for :users …,也有用于UsersController的resources :users。这意味着devise和您的UsersController将尝试共享一些相同的/users路由。您需要通过更改其中一个映射到的路径来将它们分开。例如,您可以将:path => 'u'添加到devise_for语句中,以便设备路由映射到/u,并且不会与/users上的UsersController冲突。或者,您可以不使用devise_for (因此仍使用/users),而将UsersController路由更改为例如resources :users_admin, :controller => 'users',这会将您的UsersControllers路由映射到/users_admin。请注意,这会将路径帮助器从users_path更改为users_admin_path

更新

在你的评论/编辑之后,我快速浏览了一下教程,我认为devise基本上给了你与用户相关的功能,这些功能是从5.4节发展到9.1或9.2节的。(外加一些额外的东西,例如,电子邮件确认,密码重置,帐户锁定等)。但是,这并不意味着它是该功能的临时替代品,如果您想尝试将设计与该教程合并的话。有一些看起来可以工作的东西(例如,Devise还定义了一个current_user方法),但路由等会有所不同,devise将事情分成更多的控制器(单独的控制器用于注册,登录/注销,密码重置…)。管理员类型的功能(如第2.2,9.3,9.4节-创建/编辑/删除/列出其他用户)是我在我的应用程序中为其添加了一个单独的UsersController。Devise没有定义UsersController,但是如果您在没有路径的情况下使用users路由,就像我上面提到的那样。

所以,更具体地说:

  1. 如果您想启用允许查看/编辑/删除所有用户的管理员类型功能,则只需要一个UsersController。
  2. 如果您想在本教程中使用devise,它可能需要一些工作来调整内容,更改页面上的帮助链接等。对不起,我没有更详细的说明;我还没有完成该教程。

您可能会错过手动完成所有这些工作所带来的额外了解,但devise是一个流行的引擎,因此了解它也是很好的。如果您有时间,您可以完全完成教程,然后再使用devise!它将帮助您了解devise在幕后所做的一些事情。附言:即使你不能立即完全理解,看一下设计的源代码也是很有指导意义的。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22879222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档