title: Undefined method for `before_filter'
body: <p>I am running into the following error despite the method being clearly defined in the next line.</p>
  
  <pre><code>undefined method `before_filter' for AuthorsController:Class
  </code></pre>
  
  <p>I am following this <a href="http://tutorials.jumpstartlab.com/projects/blogger.html#i5:-authentication" rel="noreferrer">tutorial</a>.</p>
  
  <p>Code snippet as follows:</p>
  
  <p><strong>authors_controller.rb</strong></p>
  
  <pre><code>class AuthorsController &lt; ApplicationController
  
    before_action :set_author, only: [:show, :edit, :update, :destroy]
    before_filter :zero_authors_or_authenticated, only: [:new, :create] 
  
    def zero_authors_or_authenticated
      # If either one of them is true this filter won’t do anything, allowing the requested user registration form to be rendered
      unless Author.count == 0 || current_user # checking if there are either zero registered users OR if there is a user already logged in
        redirect_to root_path # if neither are true, then redirect to root_path and return false
        return false
      end
    end
  
    # GET /authors
    # GET /authors.json
    def index
      @authors = Author.all
    end
  
    # GET /authors/1
    # GET /authors/1.json
    def show
    end
  
    # GET /authors/new
    def new
      @author = Author.new
    end
  
    # GET /authors/1/edit
    def edit
    end
  
    # POST /authors
    # POST /authors.json
    def create
      @author = Author.new(author_params)
  
      respond_to do |format|
        if @author.save
          format.html { redirect_to @author, notice: 'Author was successfully created.' }
          format.json { render :show, status: :created, location: @author }
        else
          format.html { render :new }
          format.json { render json: @author.errors, status: :unprocessable_entity }
        end
      end
    end
  
    # PATCH/PUT /authors/1
    # PATCH/PUT /authors/1.json
    def update
      respond_to do |format|
        if @author.update(author_params)
          format.html { redirect_to @author, notice: 'Author was successfully updated.' }
          format.json { render :show, status: :ok, location: @author }
        else
          format.html { render :edit }
          format.json { render json: @author.errors, status: :unprocessable_entity }
        end
      end
    end
  
    # DELETE /authors/1
    # DELETE /authors/1.json
    def destroy
      @author.destroy
      respond_to do |format|
        format.html { redirect_to authors_url, notice: 'Author was successfully destroyed.' }
        format.json { head :no_content }
      end
    end
  
    private
      # Use callbacks to share common setup or constraints between actions.
      def set_author
        @author = Author.find(params[:id])
      end
  
      # Never trust parameters from the scary internet, only allow the white list through.
      def author_params
        params.require(:author).permit(:username, :email, :password, :password_confirmation)
      end
  end
  </code></pre>
  
  <p>Using Sorcery as authentication, windows 10, visual code.</p>