LoginSignup
0
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-17

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

0
1
1

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
0
1