如何跳过Devise的SessionsController的before_filter?

Spy*_*ros 20 ruby-on-rails before-filter devise

我有一个before_filter在我的ApplicationController; 也就是说,对于我项目中的每个控制器.

我如何skip_before_filter为Devise的SessionsController创作行动?

Nat*_*ong 64

这是我的同事刚给我看的一种方法:

# In config/application.rb
module YourAppNameHere
  class Application < Rails::Application
  # Whatever else is already here...

    # The part to add
    config.to_prepare do
      Devise::SessionsController.skip_before_filter :your_before_filter_here
    end
  end
end
Run Code Online (Sandbox Code Playgroud)


Kam*_*rna 20

我最近在我的过滤器中遇到了这个问题我application_controller用它解决了它skip_before_filter

skip_before_filter :check_subdomain!, if: :devise_controller?
Run Code Online (Sandbox Code Playgroud)


Ber*_*als 16

我们做了这样的事情:

首先,创建自己的会话控制器,确保正确继承:

class SessionsController < Devise::SessionsController
  skip_before_filter :foobar
Run Code Online (Sandbox Code Playgroud)

然后修复路线

devise_for :users,
  :controllers => {
    :sessions => "sessions"
  }
Run Code Online (Sandbox Code Playgroud)

或者你可以修补Devise的会话控制器.