Techioz Blog

Ruby on Rails - before_action が早期にレンダリングされるときに after_action を実行する

概要

常に after_action を呼び出したいコントローラーがあります

before_action :auth
after_action :track, only [:index]

def index 
 render json: ..., status: 200
end

def show
...
end

def auth
 return if some_condition
 render json: ..., status 422
end

def track 
 status = response.status if response.successful?
 # do something with status
end 

after_action が常に呼び出されるようにする最善の方法は何ですか?現時点では、実際にインデックス アクションに到達した場合にのみ呼び出されます。

after_action の唯一のセクションに :auth を追加してみました

解決策

after_action コールバックは、それに関連付けられたアクションが実行された場合にのみ呼び出されます。どのアクションが実行されるかに関係なく、トラック after_action が常に呼び出されるようにしたい場合は、before_action を使用して各アクションの開始時にトラックを呼び出すことができます。

before_action :auth
before_action :track

def index 
  render json: ..., status: 200
end

def show
  # ...
end

def auth
  return if some_condition
  render json: ..., status: 422
end

def track 
  status = response.status if response.successful?
  # do something with status
end