ruby-on-rails-4 - 在Rails中使用Devise时是否需要 “Users” Controller

标签 ruby-on-rails-4 devise railstutorial.org

我是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路由。

因此,更具体地说:

  • 如果要启用允许查看/编辑/删除所有用户的管理员类型功能,则只需要一个UsersController。
  • 如果您想在本教程中使用devise,可能需要进行一些工作来调整内容,更改页面上的帮助程序链接等。我还没有完成该教程。

  • 您可能会错过对自己手动完成所有操作所获得的额外理解,但是devise是一种流行的引擎,因此也很高兴知道。如果有时间,您可以完全完成本教程,然后再重新设计!它可以帮助您了解设计在幕后所做的某些事情。附注:即使您不立即了解所有源代码,这对设计源代码也很有帮助。

    关于ruby-on-rails-4 - 在Rails中使用Devise时是否需要 “Users” Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22879222/

    相关文章:

    ruby-on-rails - RoR 教程 Michael Hartl 5.27

    ruby-on-rails - 无法使 postgres unaccent 扩展在 rails 上工作

    ruby-on-rails-4 - 为什么设计生成这种格式的确认 URL?

    ruby-on-rails - 设计 - 列出用户

    ruby-on-rails - 在 View 规范中测试 "dynamic"页面标题 (Rails 4 + RSpec 3)

    ruby-on-rails - RailsTutorial 3.2 Ch 11 - PostgreSQL 语法错误中断状态提要

    ruby-on-rails - 递归部分局部变量不起作用

    ruby-on-rails-4 - Doorkeeper::AuthorizationsController#create 无法验证 CSRF token 的真实性

    ruby-on-rails - PaperTrail 中的自定义表格与 Rails 4

    ruby-on-rails - 允许用户在设计中创建其他用户?