paramsはどのように管理されているか

こんにちは、カイノです。

突然ですけど、paramsって難しくないですか?( ;∀;)
Rails勉強している人なら確実に経験する項目だと思います。

なんとなく理解して通り過ぎようかとしてましたが、
よくよく考えてみると後ろでどうなっているか気になって調べてみました。

初心者の方だとわかってるようで意外とわかってない部分になりがちかと思います。
調べたり、人に質問してみてわかったことをアウトプットしていきます。


参考サイト
Rails入門説明書】paramsについて解説
web-camp.io

Rails入門】params使い方まとめ
www.sejuku.net



まずparamsとはparametersの略で直訳で媒介変数というものです。
【媒介変数】変数の間の関数関係を、間接に表すために用いる変数。 関数x=f(t)とy=g(t)とからxとyとの関数関係が定まるときのtのこと。※コトバンクから引用

で、なにをしてるかですが、
Railsで送られてきた値を受け取るためのメソッドです。

送られてくる情報(リクエストパラメータ)は主に、getのクエリパラメータとPostでformを使って送信されるデータの2つです。
特にRailsのページ遷移で情報をやりとりするときに使われていますね。

普通ですとこれを聞いて「あ、そうか、そうなんだ」で終わりだと思うのですが、これは後ろでどうなっているかとかこのままじゃわからないですよね。

これではparamsが結局何かを理解していきたいと思います。


f:id:kaifumi:20200105232022p:plain

これはURLにposts/1を末尾付けています。
postsがテーブル名で最後の数字が何番目のレコードかを表しています。

この時、実はすでに以下のように数字の1はparamsのハッシュとして渡されています。
Parameters: {"id"=>"1"}

これは以下のパスで確認できます。
/Users/ユーザー名/Desktop/アプリ名/log/development.log

これによって
アクションを使う時に入れるpamas[:id]の値が引き出されています。

f:id:kaifumi:20200105233547p:plain

上のようなアクションですね。


さらにですが、
どうしてもparamsの中に何が入っているか気になるときにはbainding.pryが便利みたいです。
binding.pryでデバッグする方法 - Qiita


Railsというフレームワークが用意してくれた便利なツールとしてparamsがありますが、他にもたくさんあって、それらの便利さだけに慣れてしまうと肝心の技術力が身につかないですね。

自分自身のparamsの理解がまだ浅い気がしますのでもっと注意深く勉強していきます。