我是Rails新手。我正在一个小的Rails4项目中尝试提高自己的技能。
我大致遵循M.Hartl's tutorial。
根据教程,将构建自定义用户身份验证。
但是,我想使用Devise进行用户身份验证。
是否仍然需要本教程中的Users Controller ?
在已经使用Devise的情况下,应该在什么情况下使用/不使用Users Controller ?
关于本教程,我只是跳过 Controller 生成部分,还是必须将操作映射到Devise?
最佳答案
如果要与正常的注册/更新过程分开管理用户,则仅需要一个用户 Controller 。我有一个用户 Controller ,以便管理员可以独立于正常的设计注册/更新过程来管理(创建,编辑,更新,删除)用户。
与devise的冲突可能是因为您在routes文件中有devise_for :users …
来设置devise,并且还为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
。
更新
在您发表评论/编辑之后,我快速浏览了该教程,我认为该设计基本上为您提供了与用户相关功能的等效功能,该功能从5.4节扩展到大约9.1节或9.2节。 (加上一些额外的内容,例如,电子邮件确认,密码重置,帐户锁定等)。但是,这并不意味着它是该功能的直接替代品,如果您想尝试将Devise与该教程合并。看起来有些事情会起作用(例如,Devise还定义了current_user
方法),但是路由等会有所不同,并且devise将其分解为更多的 Controller (用于注册,登录/注销,重置密码的单独 Controller ) …)。管理员类型的功能(如2.2、9.3、9.4节-创建/编辑/删除/列出其他用户)是我在应用程序中为其添加了单独的UsersController的功能。 Devise并未定义UsersController,但如果您在没有上述路径的情况下进行users
,则会使用devise_for :users
路由。
因此,更具体地说:
您可能会错过对自己手动完成所有操作所获得的额外理解,但是devise是一种流行的引擎,因此也很高兴知道。如果有时间,您可以完全完成本教程,然后再重新设计!它可以帮助您了解设计在幕后所做的某些事情。附注:即使您不立即了解所有源代码,这对设计源代码也很有帮助。
关于ruby-on-rails-4 - 在Rails中使用Devise时是否需要 “Users” Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22879222/