1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

paramsメソッドについて

Posted at

挨拶

こんにちは、プレイライフの熊﨑です!
来月友人の結婚式があるということで、自分の婚期について若干の不安を抱えています。
結婚はいつになるのやら、、、、

そんなことは置いといて、今日もアウトプットを行っていこうと思います!
本日はparamsメソッドについてです。

対象読者

  • paramsメソッドの使用経験はあるが、なんとなく使っている方

paramsメソッドについて

paramsとはリクエストで送られてきた値を受け取るためのメソッドです。

送られるデータの種類

送られてくる情報には、「投稿フォームなどPOSTで送信されたデータ」と「検索フォームなどGETで送信されURLにクエリとして入るデータ」があります。
これらのデータを取得するのが、paramsメソッドの役目です。

使い方

以下のように書くことでカラム名の値を取得することができます。

params[:カラム名]

どのように使うのか?

URLから送られてきた情報をコントローラーで使用したいとき

具体例

ユーザーから以下のようなリクエストが飛んできている場合
https://hogehoge.com/users/12

controller.rb
def show
  @user = User.find(params[:id])
end

# params[:id]で12を返す

投稿された情報をコントローラーで使用したいとき

具体例

controller.rb
def create
  user = User.new(permit_params)
  user.save
end

def permit_params
  params.permit(:name)
end

permitメソッドを使用しているのはストロングパラメータにするためです。
カラムを取得しないでparamsメソッドを実行すると、フォームに入力した情報以外も取得できてしまいます。
そのため、User.new(params)のようにすると、悪意を持ったユーザーがフォームに入力されている以外の不正な値を投稿した際に、DBの値が更新されてしまう可能性が出てきます。(Rails4からは、permitメソッドで許可されていないパラメータはDBに保存できないようになっています。)
このような場合に備えて、ストロングパラメータにすることで、フォームに入力した情報以外を更新できないようにする必要があります。

まとめ

  • paramsメソッドは投稿フォームやURLから送られてきたデータを取得するメソッド
  • paramsで受け取った値を用いてDBを更新する場合には、strongパラメータにする必要がある。

参考記事

https://railsguides.jp/action_controller_overview.html
https://pikawaka.com/rails/params

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?