Railsチュートリアル 第7章 メモ書き
○ユーザー登録
ユーザー登録フォーム→ユーザー保存→成功でデータベースに登録
→ブラウザの表示をリダイレクト→登録ユーザーのプロフィールを表示+ウェルカムメッセージ
・ミックスイン:
Sassの機能で、CSSルールのグループをパッケージ化することで
複数の要素に適用するようにしたもの。
@mixin box_sizing{}でbox_sizing内のCSSをパッケージ化
@include box_sizing;で他の要素に適用。
・Usersリソースのroutes:
Resources :usersをrouteに追加することで、ユーザーのURLを生成するための
名前付きルートと共に、必要となる全てのアクションが利用可能に。
・debug:
デバッグ情報を表示するためのメソッド。似たようなメソッドにbyebug gem内にあるdebuggerがあり、アプリの挙動がおかしい時にトラブルが発生していそうなコードに差し込む。そうするとbye bugプロンプトが開き、システムの状態を調査することができる。
・form_with:
ヘルパーメソッドの一つで、ActiveRecordのオブジェクトを取り込み、
そのオブジェクトの属性を使ってフォームを構築する。
<%= form_with(model: @user, local: true) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
…
<% end %>
↓HTML生成
<label for="user_name">Name</label>
<input id="user_name" name="user[name]" type="text" />
・マスアサインメント:
値のハッシュを使ってRubyの変数を初期化するもの。
@user = User.new(params[:user])
ユーザーの送信したデータを全てUser.newに渡していることになり、
admin属性(管理者)が1という情報をWebリクエストに紛れ込ませるだけで、
Webサイトの管理者権限を奪い取ることができてしまうため、セキュリティー上危険。
・Strong Parameters:
上に書いた危険を防止する目的で、必須のパラメータと許可されたパラメータを指定
できるようにしたもの。params[:user] の代わりにuser_paramsメソッドを使うのが通例。
params.require(:user).permit(:name, :email, :password, :password_confirmation)
→:user属性を必須とし、名前、メールアドレス、パスワード、パスワード確認の属性を許可
・エラーメッセージ:
RailsにはエラーメッセージをUserモデルの検証時に自動生成する。
errors.full_messagesメソッドで表示可能。
ブラウザに表示する場合は、パーシャルをrenderで出力すれば良い。
※複数のビューで使われるパーシャルは専用のディレクトリsharedによく置かれる。
・redirect_to 〜:
~のURLにリダイレクトするコード。
・flash:
flash[:success] = "Welcome to the Sample App!"
で引数が渡された時(上の場合は成功時)にWelcome to the Sample App!というメッセージを表示。
ページを変えたり、リロードするとこのメッセージは消えている。
Bootstrap CSSにはflash用にsuccess、info、waring、dangerの4つスタイルが用意されている。
・SSL:
現時点のチュートリアルで作成したユーザー登録フォームでは、名前やアドレスなどの
データがネットワーク越しに流されていく欠陥がある。
その前に暗号化を行うのがTLS(Transport Layer Security)でSSLはその一つ。
有効化にはproduction.rbという本番環境の設定ファイルに config.force_ssl = true
を書き加えるだけでOK(本来はSSL 証明書を購入する必要あり)。
・Puma:
多数のリクエストを捌くことに適したRuby/Rackアプリケーション用のサーバー。
HerokuのデフォルトはWEBrickで簡単なセットアップに向く。
サーバーをPumaに変更する場合は、Gemfileにpuma gemを追加することだが、
Rails5.0以降はデフォルトで入っている。