アルテリオス式すぐコード書けそう【TECH::EXPERT】

Rails TECH::EXPERT プログラミング 応用カリキュラム編

【本日のメニュー】
・理解度確認テスト対策
・before_action
・Strong Parameters
・params
・only
・パラシュート弊害タイム

【理解度確認テスト対策】
カリキュラム内の理解度確認テスト対策として出てきた問題を読んでわからないところを調べぇしてました。

リファリング問題とかrails周りはほぼわかってないので恒例のパラシュート学習タイムです。22日までに終わらせれば問題ないです。
23日にはチャットスペース入ります。
ハッピーバースデー可憐ちゃん(シスプリ20周年おめでとう)
きっとうまくいく(名作)

【before_action】
Railsで使われるメソッドでアクション実行前に実行されるメソッド。
なんかそんなのがあるって書いてあったのは覚えてます。(素直に申告マン)

でもさ、before_actionって一番上に書いてあって
「アクション実行前に実行(キリッ)」っておかしくない?
だって一番上に書いてあるんだよ?

と思って調べたら解決しました。

ブラウザからのリクエストがくる。railsにてroutes.rbが発火

routes.rbにてコントローラとアクションを特定してコントローラを見にいく

Controllersを読むが当該のアクション部分のみ見にいく
※上から読むではない

だからbefore_actionを設定する必要があったのですね。

[参考]Ruby on Rails ソースファイルの読む順序について
https://qiita.com/jaramon/items/a5c7b676dc384544290a

【Strong Parameters】
なんか強かった気がする。(スーパーうろ覚え)

Strong ParametersはDBに入れる値を制限することで、不正なパラメータの入力を防ぐ仕組みであること。セキュリティ的にも必須!

ふむ、ここまでは大丈夫。

#例)
def tweets_params
params.permit(:image, :text).merge(user_id: current_user.id)
end

 

▼permit
例でいうと「image」「text」のみを受け取るためにこのような記述になってますが、
「permit」を使わないと他のパラメータも受け取れてしまうそうです。
極端な話だとフォームを偽造して「password」パラメータを送ったら、今送信したものに置き換わるので悪さログインできてしまいます。
「permit」を使うことで「image」「text」以外を送っても弾くようになります。

だから「permit」をつける必要があったわけですね。[!] strong parametersを使ってないとエラーが出るらしい。やさしい世界
どうやら以前のrailsの送信系に脆弱性があったらしく、そのためこのメソッドが生まれたんだとか。セキュリティ対策しないのであればエラー(バッサリ)
こうしてせかいはへいわをとりもどした。

[参考]RailsのStrong Parametersを調べる
https://qiita.com/mochio/items/45b9172a50a6ebb0bee0
[参考]Railsのrequire/permitメソッドの使い方を現役エンジニアが解説【初心者向け】
https://techacademy.jp/magazine/22078

【params】
送られてきた値を受け取るためのメソッドです。
「送ります」があったら、ご丁寧に「受け取ります」がないと成立しないよ。
それがプログラミングってことかな?
ここら辺はまた練習でpictweetいじってるのでやりながら深めます。

なんかよくわかんないけど、よくいるよね。
Rails「p」から始まるメソッド多すぎィ!

【only】
なんか特定のものに絞ってるでしょ?(スーパーうろ覚え)
Pictweetでいうと、「ログインしてるとできる」系の記述が複数あり、それをまとめて「before_action」で読み込んでいるのですが、
でもログインしてなくてもいいアクションでも読み込んじゃうと無駄でバグの元だよね?
じゃあonlyつけて必要なところを指定しましょう。
ということらしい。

before_action : only: [:edit, :show, :destroy, :update]

こんな感じで。

[参考]rails: before_actionとは
https://qiita.com/weedslayer/items/c3ab7ad37d5a1e325989

 

【パラシュート弊害タイム】
今までガンガン進めてましたが、パラシュート学習法の弊害で
「調べないと」「読み込まないと」「ちゃんと理解してないと」できない事柄が出てきました。

いや、いつものことなんだけど。

なので今日は、クリアできないカリキュラム対策として調べ物と、復習を行いました。

いやだなー、コード書いて学びたいなー

とか最初は思ってましたが、久々にちゃんと読んで理解しようとするのも意外と楽しい。
わかる!わかるぞ!ってなった。

群馬のクソガキと遊んでグロッキーだった体調も回復したのもあって、脳みそがちゃんと動いてました。めでたし。