エラーメッセージ

<% if teacher.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(teacher.errors.count, "error") %> prohibited this teacher from being saved:</h2>

    <ul>
    <% teacher.errors.full_messages.each do |message| %>
      <li><%= message %></li>
    <% end %>
    </ul>
  </div>
<% end %>

上記はエラーメッセージを表示するための記述。scaffold では_formファイルの form_with下に生成される。モデルの処理でエラーがあるとerrors オブジェクトが作られる。エラーがあった場合はif teacher.errors.any?以下が実行される。

pluralize(teacher.errors.count, "error")

pluralizeは単数形を複数形に変換するためのメソッド。第一引数の数値を第二引数を単位として表現する。エラーの数が1なら1 error で2なら 2 errors となる

<% teacher.errors.full_messages.each do |message| %>
  <li><%= message %></li>
<% end %>

validationにかかった場合、インスタンス.errors.full_messages のなかに配列でエラーメッセージが入る。順に取り出して表示しなんで保存に失敗したかをユーザが確認できるようにしている。