Вы можете использовать опции only
и except
:
before_action :setContext, only: [:show, :edit]
before_action :setContext, except: [:new, :destroy]
Вы также можете использовать опцию if:
или unless:
с лямбдой:
before_action :setContext, if: -> { request.format.html? }
before_action :setContext, unless: -> { request.format.json? }
Вы также можете использовать skip_before_action
, что полезно, если before_action
определен в родительском классе:
class ApplicationController
before_action :authenticate_user!
end
class ThingsController < ApplicationController
skip_before_action :authenticate_user!, only: [:index, :show]
end