使用Devise in Rails时是否需要"用户"控制器?

ima*_*arg 19 devise railstutorial.org ruby-on-rails-4

我是一个Rails新手.我正在研究一个小型的Rails4项目,试图提高我的技能.我正在松散地关注M.Hartl的教程.

根据本教程,构建了自定义用户身份验证.但是,我想使用Devise进行用户身份验证.我还需要像教程中那样拥有一个用户控制器吗?在使用Devise时,我应该在哪些情况下使用/不使用Users控制器?

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

Tim*_*Tim 42

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

与设计的冲突可能是因为您devise_for :users …在路径文件中设置了设计,并且还有resources :users您的UsersController.这意味着设计和您的UsersController将尝试共享一些相同的/users路由.您需要通过更改其中一个映射到的路径将它们分开.例如,您可以添加:path => 'u'devise_for语句中,以便将设计路由映射到/u并且不会与您的UsersController冲突/users.或者,您可以devise_for单独保留(因此仍然使用/users),而是将UsersController路由更改为,例如,resources :users_admin, :controller => 'users'这将移动您的UsersControllers路由以映射到/users_admin.请注意,这会将路径助手从例如更改users_pathusers_admin_path.

UPDATE

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

所以,更具体地说:

  1. 如果要启用管理类型功能以允许查看/编辑/删除所有用户,则只需要UsersController.
  2. 如果你想在教程中使用设计,可能需要一些工作来按摩东西以适应,更改页面上的帮助链接等.抱歉,我不是更具体; 我还没有完成那个教程.

你可能会错过自己手动完成的额外理解,但设计是一种流行的引擎,因此也很好.如果你有时间,你可以完全完成教程,然后再设计!它可以帮助你理解设计在幕后所做的一些事情.PS:即使你不能立即理解它,看看设计源代码也是有益的.