skip_before_action for a few controllers in Rails?

You will have to specify skip_before_action :authenticate_user! in every controller whose actions aren't supposed to be authenticated. You can not pass the name of controller or any thing like that as an argument to skip_before_action method.

One solution is: You can make a controller called APIController, and you can specify the skip_before_action thing there like:

class APIController < ApplicationController
  skip_before_action :authenticate_user!
  # rest of the code
end

And then all the controllers at app/controllers/api/ can inherit from APIController.

class OtherController < APIController
end

You can try like this if all the controllers are under API folder:

class ApplicationController < ActionController::Base
  before_action :authenticate!


  def authenticate!
    if params[:controller].split("/").first == "api"
      return true # or put code for what wherever authenticate you use for api  
    else
      authenticate_user!
    end
  end
end