😎

Railsにおけるストロングパラメーターとは

2024/06/06に公開

本日はストロングパラメーターのアウトプットです。
Ruby on Railsを使ってSNSアプリを実装したとします。その際、必ずユーザーは投稿(createアクション)を行います。その投稿フォーム実装の際にセキュリティを高めるために使われるのがストロングパラメーターです。

class PostsController < ApplicationController
  def create
    # ストロングパラメータを使用して、許可されたパラメータのみを受け取る
    @post = Post.new(post_params)
    if @post.save
      redirect_to @post, notice: 'Post was successfully created.'
    else
      render :new
    end
  end

  private

  def post_params
    # 必ず :post キーがあり、その中の :title と :content だけを許可する
    params.require(:post).permit(:title, :content)
  end
end

ストロングパラメーターとは何のためにあるのか?

結論、アプリケーションのセキュリティを高めるためです。投稿の際に悪意のある誰かが不正なデータを送信することを防ぐために、メソッドを使って予め送信できるデータを制限する必要があります。

requireメソッド

require メソッドは、params から取得するデータのオブジェクト名を指定します。**オブジェクトとは、データのまとまりです。**例えば、投稿データ(:post)の中身が投稿タイトル title と本文 content の場合、title と content がキーであり、それらをまとめて保持しているオブジェクトが :post です。

# :postオブジェクトの取得を許可
require(:post)

permitメソッド

permitメソッドは、オブジェクトの中の特定のキーの取得を許可します。以下のように、requireメソッドと併用します。

# :postの中の:titleと:contentを許可
params.require(:post).permit(:title, :content)

今回は :post の中の :title と :content を指定して許可しました。それ以外のデータを送るとエラーになります。このようにしてセキュリティを高め、悪意のある第三者からアプリやシステムを守ることができます。

Discussion