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