みなさん、こんにちは。
Rails アプリケーションでは、コントローラが「ユーザーのリクエストを受け取り、処理し、レスポンスを返す」という中心的な役割を担います。よって、コントローラの書き方は、アプリケーション全体の安全性・可読性・保守性に直結します。
Rails7技術者認定ベーシック試験でもコントローラは重要分野で、特に重要なのは以下の2点です。
- before_action を使った共通処理の整理
- Strong Parameters による安全なパラメータ管理
これらは Rails の「安全設計」の中核であり、実務でも欠かせない知識です。
今回はこの2つの内容を基に、「安全で読みやすいコントローラを書くとはどういうことか」を整理していきましょう。
before_action の役割と考え方
before_action は、アクションが実行される前に共通処理を差し込む仕組みです。典型的な使用例としては、以下があります。
- ログイン済みユーザーの確認
- 共通で使うレコードの取得
- 権限チェック
| class PostsController < ApplicationController before_action :set_post, only: [:show, :edit, :update, :destroy] def show end def edit end private def set_post @post = Post.find(params[:id]) end end |
このように書くと、
- 各アクションに Post.find(params[:id]) を何度も書かずに済む
- 「このコントローラでは何を事前にしているか」が一目で分かる
というメリットがあります。
試験では、
- before_action がどのタイミングで実行されるか
- onlyやexcept オプションの意味
がよく問われます。
Strong Parameters が必要な理由
Rails では、ユーザーから送信されたパラメータを params に受け取れます。しかし、この params は 何でも入ってくる危険な箱でもあります。そこで登場するのが Strong Parameters です。もし Strong Parameters がなければ、
| Post.create(params[:post]) |
のようなコードで、意図しないカラムが書き換えられてしまう可能性があります。
これを防ぐために以下のように記述します。
| def post_params params.require(:post).permit(:title, :body) end |
ここで使われているメソッドは以下のように使用します。
- require : 必須のキーを指定
- permit : 許可する属性だけを明示
試験では、
- require と permit の役割の違い
- 許可していない値はどうなるか
といった点が問われます。
before_action × Strong Parameters
安全で読みやすいコントローラには、以下のような共通点があります。
- 共通処理は before_action に集約されている
- パラメータ処理は private メソッドに分離されている
- 各アクションの中身が短く、意図が明確
例えば次のようなコードは、実務でも試験でも正解と言える書き方です。
| class PostsController < ApplicationController before_action :set_post, only: [:update] def update if @post.update(post_params) redirect_to @post else render :edit end end private def set_post @post = Post.find(params[:id]) end def post_params params.require(:post).permit(:title, :body) end end |
模擬問題
問題1
次のコードについて正しい説明を1つ選びなさい。
| class PostsController < ApplicationController before_action :authenticate_user def index end end |
選択肢
1. index アクションの後に authenticate_user が実行される
2. index アクションの前に authenticate_user が実行される
3. authenticate_user は index では実行されない
4. authenticate_user は view の描画後に実行される
正解
2
解説
before_action は、その名の通り「アクションが実行される前」に呼び出されます。この問題では index アクションの前に authenticate_user が実行されます。
問題2
次の before_action の指定として正しい説明を1つ選びなさい。
| before_action :set_post, only: [:show, :edit] |
選択肢
1. show と edit 以外のアクションで実行される
2. show と edit のみで実行される
3. すべてのアクションで実行される
4. edit の後にのみ実行される
正解
2
解説
only オプションを指定すると、指定したアクションにのみ before_action が適用されます。一方、except オプションを使うと、指定したアクション以外でのみ実行されます。
問題3
次のうち、Strong Parameters の目的として最も適切なものを1つ選びなさい。
選択肢
1. params を数値型に変換する
2. コントローラの処理を高速化する
3. ユーザーから送信されるパラメータを制限する
4. before_action を簡単に書けるようにする
正解
3
解説
Strong Parameters は、ユーザーが送信できる属性を明示的に制限する仕組みです。これによって、意図しないカラムの更新(Mass Assignment 脆弱性)を防げます。
まとめ
今回は、コントローラ設計の要となる、
- before_action
- Strong Parameters
を中心に、安全で読みやすいコントローラの考え方を整理しました。
- before_action によって共通処理を整理できる
- Strong Parameters によって不正なパラメータ操作を防げる
- 両者を組み合わせることで、短く・安全で・意図が明確なコードになる
これらは Railsで変わらない基本原則で、試験対策としても実務においても必ず身につけておきたいポイントです。
次回は、「認証・認可とコントローラ設計」 を取り上げたいと思います。current_user や権限制御についての理解を深めましょう。
Rails7認定ベーシック試験について
全国300か所で通年実施しています。詳細は以下をご覧ください。

また、450ページを超える教科書も安価に出版しています。学習にあたってご活用ください。詳細は以下をご覧ください。
Rails 7 技術者認定ベーシック試験公式教科書ベータ版
著者:小澤昌樹 発行:Rails技術者認定試験運営委員会
価格(税込):ペーパーバック版 2,497円 Kindle版 1250円
ページ数:471ページ




