😎
Railsにおけるストロングパラメーターとは
本日はストロングパラメーターのアウトプットです。
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