Пропуск 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

и мой другой контроллер:

class UsersController < ApplicationController
 skip_before_action :require_login, :except => [:landing, :connect, :create]
end

Я не знаю, почему, но когда я нахожусь в корне (действие: приземление от UserController), Rails пытается передать в require_login... Я неправильно понял что-то с этим фильтром или что-то не так?

Спасибо за любую помощь!

Ответы

Ответ 1

Это звучит нормально для меня - вы попросили рельсы пропустить свое действие перед действием, за исключением случаев, когда действие :landing, :connect или :create, тогда как кажется, что вы хотите сделать наоборот. Если вы хотите, чтобы эти 3 действия не выполняли require_login, тогда вы должны делать

skip_before_action :require_login, :only => [:landing, :connect, :create]