Ruby on rails 在操作前使用设计:验证用户!不';我什么也不做

Ruby on rails 在操作前使用设计:验证用户!不';我什么也不做,ruby-on-rails,devise,Ruby On Rails,Devise,我试图要求登录Rails4网站上的所有页面。 在ApplicationController中,我在\u操作:验证\u用户之前添加了,但它根本不起任何作用。我尝试在\u操作:验证\u用户之前添加相同的到另一个控制器,它工作正常 我是否需要对ApplicationController执行其他操作,以使所有操作(注册/登录除外)都需要登录?以下是我们使用的实际代码: #app/controllers/application_controller.rb Class ApplicationControll

我试图要求登录Rails4网站上的所有页面。 在ApplicationController中,我在\u操作:验证\u用户之前添加了
,但它根本不起任何作用。我尝试在\u操作:验证\u用户之前添加相同的
到另一个控制器,它工作正常


我是否需要对ApplicationController执行其他操作,以使所有操作(注册/登录除外)都需要登录?

以下是我们使用的实际代码:

#app/controllers/application_controller.rb
Class ApplicationController < ActionController::Base
   #Actions
   before_action :authenticate_user! #-> routes to the login / signup if not authenticated
end
--

您在某种程度上“跳过”了操作前的
回调

如果您在任何位置使用
skip\u-before\u-action
,则需要将其删除。这可能会导致您的
authenticate\u用户出现问题方法。为了解决这个问题,我首先在没有任何
skip\u操作之前进行测试
callbacks,然后看看是什么让它正常工作



还有一点需要注意的是,
登录/注册
并不重要。它们都继承自
设计
控制器;它们会按要求运行

2019年更新

routes.rb
文件中,您可能只提到了authenticated\u用户路径,如下所示

authenticated :user do
    root to: 'home#index', as: :root_app
  end

您应该提及未经验证的\u用户路径以使其工作,或者只提及根路径而不提及未经验证的\u用户已验证的\u用户

,只要您的其他控制器确实从ApplicationController继承……我刚刚发现我正在使用ActionController::Base,而不仅仅是从ApplicationController继承。我回去写答案,但你走在我前面:)哈哈,谢谢你的投票和接受!现在可以用了吗?
authenticated :user do
    root to: 'home#index', as: :root_app
  end