Ruby
Rails

rails チュートリアル 7章について

rails チュートリアル 7章 

rails チュートリアルを一周して、まだ不安な章をもう一回勉強。その時のメモ書き。自分なりに忘れそうなところしか書いてないです。

デバッグ

<%= debug(params) %>

このコードをapplication.html.erbのbody部分に書くと、常にデバッグが表示される。
基本的にデバッグ情報は開発環境だけに表示されれば良いので(逆に本番環境では表示させたくない)

<%= debug(params) if Rails.env.development? %>

このようにif文を入れて開発環境だけでデバッグ表示することが多い。

またこの方法はviewにしか出ないのでcontrollerやmodelのデバッグはわからない。
view以外の方法は、pry-byebugやbyebugというgemを使う方法がある。(この章ではbyebugを使っている。)

byebugはdebuggerメソッドを使ってデバッグを確認する。使い方は簡単で、debuggerというコードを気になる箇所に書くだけ。(Ctrl-Dで抜け出せる)

Gravatar

Gravatarとは無料で画像とメールアドレスを結びつけるサービス。画像のアップロードの手間を省いたり、画像の保存先に適している。

使い方はhelperでメールアドレスや画像を設定してそれをviewで表示させる感じ。7章を見ればだいたい使い方はわかる。

form_forについて

何も考えずに使いがちなform_forですが改めて。

 <%= form_for(@user) do |f| %>
      <%= f.label :name %>
      <%= f.text_field :name %>
 <%= f.submit "Create my account" %>

この時に大事なのは form_forの引数である@user
全てのRubyオブジェクトは自分のクラスを知っているので、railsは@userのクラスがUserであることを暗黙でわかっている。(これがいわゆるオブジェクト指向)
これにより、@userがUserクラスにないならcreateアクション。@userがUserクラスにあるならupdateアクションに振り分けられる。

 Strong Parameters

@user = User.new(params[:user])

このようにして新規ユーザーを作成しようとすることは間違っていないが、この書き方だとセキュリティの面で良くない。
その理由は、paramsハッシュを初期化する行為は、admin(Webサイトの管理者かどうかを表す属性)を簡単に書き換えることができてしまうからである。

なのでそれを阻止するために、paramsハッシュではuser属性を必須とし、名前、メールアドレスの属性を許可しそれ以外を許可しないように設定する。

params.require(:user).permit(:name,:email)

さらにuser_parmamsはUsersコントローラーのみで使用されweb経由で外部に晒されないため、privateキーワードを使って外部から使えないようにする。

その他

1.empty?メソッドとany?メソッドは互いに補完しているメソッド。

2.pluralizeはhelperオブジェクトを通して使える。(引数に対して単数形や複数形にするメソッド)

>> helper.pluralize(2, "woman")
=> "2 women"
>> helper.pluralize(3, "erratum")
=> "3 errata"

3.flashに対するcssを書くときは、content_tagを使うと綺麗に書ける。

以上です。
間違っているとことや気になるところあればご指摘お願いします。

raisl チュートリアル 7章

https://railstutorial.jp/chapters/sign_up?version=5.1#cha-sign_up