我是Rails新手。我正在做一个小型的Rails4项目,试图提高我的技能。我正在松散地关注M.Hartl's tutorial。
根据本教程,将构建自定义用户身份验证。但是,我想使用Devise进行用户身份验证。我是否仍然需要像本教程中那样拥有用户控制器?在哪些情况下,我应该在已经使用Devise的情况下使用/不使用用户控制器?
关于本教程,我是直接跳过控制器生成部分,还是必须将动作映射到Devise?
发布于 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
路由,就像我上面提到的那样。
所以,更具体地说:
您可能会错过手动完成所有这些工作所带来的额外了解,但devise是一个流行的引擎,因此了解它也是很好的。如果您有时间,您可以完全完成教程,然后再使用devise!它将帮助您了解devise在幕后所做的一些事情。附言:即使你不能立即完全理解,看一下设计的源代码也是很有指导意义的。
https://stackoverflow.com/questions/22879222
复制相似问题