Concept Flow - Before and after filters
Request received
Run before filters
Run controller action
Run after filters
Send response
Rails runs before filters first, then the action, then after filters before sending the response.
class PostsController < ApplicationController before_action :authenticate_user after_action :log_action def show # show post end end
| Step | Filter/Action | When Run | Effect | Notes |
|---|---|---|---|---|
| 1 | authenticate_user | Before action | Checks user login | Prevents action if not logged in |
| 2 | show | Action | Displays post | Main controller method |
| 3 | log_action | After action | Logs action details | Runs after action, before response sent |
| 4 | Response sent | After filters done | Sends page to user | End of request cycle |
| Variable | Start | After before_action | After action | After after_action | Final |
|---|---|---|---|---|---|
| user_authenticated | nil | true or false | true or false | true or false | true or false |
| response_ready | false | false | true | true | true |
| log_written | false | false | false | true | true |
Rails filters run in order: - before_action: runs before controller method, used for checks - controller action: main code for request - after_action: runs after action, used for logging or cleanup Filters help organize code around actions cleanly.