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