在Rails中使用Devise时,我需要“用户”控制器吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (24)

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

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

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

提问于
用户回答回答于

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

与设计的冲突可能是因为你有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_path改为users_admin_path

你的评论/编辑之后,我快速浏览了本教程,并且我认为该设计基本上为您提供了从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:即使你不能立即理解,也可以看看设计源代码。

扫码关注云+社区

领取腾讯云代金券