我是Rails新手。我正在一个小的Rails4项目中尝试提高技能。我大致上遵循M.Hartl的教程。
根据教程,将构建自定义用户身份验证。但是,我想使用Devise进行用户身份验证。是否仍然需要本教程中的Users控制器?在已经使用Devise的情况下,应该在什么情况下使用/不使用Users控制器?
关于本教程,我只是跳过控制器生成部分,还是必须将操作映射到Devise?
如果要与正常的注册/更新过程分开管理用户,则仅需要一个用户控制器。我有一个用户控制器,以便管理员可以独立于正常的设计注册/更新过程来管理(创建,编辑,更新,删除)用户。
与devise的冲突可能是因为您devise_for :users …
在routes文件中设置了devise,并且还resources :users
为UsersController设计了。这意味着devise和您的UsersController将尝试共享一些相同的/users
路线。您需要通过更改其中一个映射到的路径来将它们分开。例如,您可以:path => 'u'
在devise_for
语句中添加一条代码,以便将设计路由映射到,/u
并且不会与上的UsersController冲突/users
。或者,您可以不理会devise_for
(因此仍然使用/users
),而是将UsersController路由更改为例如,resources :users_admin, :controller => 'users'
这会将您的UsersControllers路由移动到/users_admin
。请注意,这会将路径助手从例如更改users_path
为users_admin_path
。
更新
在您发表评论/编辑之后,我快速浏览了该教程,我认为该设计基本上为您提供了与用户相关功能的等效功能,该功能从5.4节扩展到大约9.1节或9.2节。(加上一些额外的内容,例如电子邮件确认,密码重置,帐户锁定等)。但是,这并不意味着它是该功能的直接替代品,如果您想尝试将Devise与该教程合并。看起来有些东西可以工作(例如,Devise也定义了一种current_user
方法),但是路由等却有所不同,而devise将其分解为更多的控制器(用于注册,登录/注销,密码重置的单独控制器……) )。管理员类型的功能(如2.2、9.3、9节中所述)用户)是我在应用程序中为其添加了单独的UsersController的功能。Devise并未定义UsersController,但users
如果您devise_for :users
没有上述路径,则确实会使用路由。
因此,更具体地说:
您可能会错过对自己手动完成所有操作所获得的额外理解,但是devise是一种流行的引擎,因此也很高兴知道。如果有时间,您可以完全完成本教程,然后再重新设计!它可以帮助您了解设计在幕后所做的某些事情。PS:即使您不立即了解所有源代码,也可以参考这些源代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句