在行动不起作用之前Rails跳过

Jul*_*ray 22 ruby-on-rails

我对skip_before动作有一些问题:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_action :require_login
  before_action :inc_cookies

  def inc_cookies
    if cookies[:token] != nil
      @name = cookies[:name]
      @surname = cookies[:surname]
      @user_roomate = cookies[:roomate]
    end
  end

  def require_login
    if cookies[:token] == nil
      puts "No token"
      redirect_to '/'
    end


  end
end
Run Code Online (Sandbox Code Playgroud)

和我的另一个控制器:

class UsersController < ApplicationController
 skip_before_action :require_login, :except => [:landing, :connect, :create]
end
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但是当我在根(中:从UsersController登陆行动),Rails的尝试在require_login通过......我misundertood一些与此过滤器,还是我什么了吗?

谢谢你的帮助!

Fre*_*ung 42

这对我来说听起来很正常 - 你已经要求rails跳过你之前的动作,除非动作是:landing,:connect或者:create听起来好像你想要相反.如果您希望这3个动作不执行,require_login那么您应该这样做

skip_before_action :require_login, :only => [:landing, :connect, :create]
Run Code Online (Sandbox Code Playgroud)