$ heroku create
でbash: heroku: command not foundと出たので1章を見ながらherokuをインストール。
2.2.1 演習
1.CSSを知っている読者へ: 新しいユーザーを作成し、ブラウザのHTMLインスペクター機能を使って「User was successfully created.」の箇所を調べてみてください。ブラウザをリロードすると、その箇所はどうなるでしょうか?
<p id="notice">User was successfully created.</p>
リロードすると消える。<p id="notice"></p>
2.emailを入力せず、名前だけを入力しようとした場合、どうなるでしょうか?
emailの入力なしでもユーザー登録が出来る。
3.「@example.com」のような間違ったメールアドレスを入力して更新しようとした場合、どうなるでしょうか?
間違ったメールアドレスを入力しても更新出来る。
4.上記の演習で作成したユーザーを削除してみてください。ユーザーを削除したとき、Railsはどんなメッセージを表示するでしょうか?
User was successfully destroyed.
2.2.2 演習
1.図 2.11を参考にしながら、/users/1/edit というURLにアクセスしたときの振る舞いについて図を書いてみてください。
2.図示した振る舞いを見ながら、Scaffoldで生成されたコードの中でデータベースからユーザー情報を取得しているコードを探してみてください。
def set_user
@user = User.find(params[:id])
end
3.ユーザーの情報を編集するページのファイル名は何でしょうか?
app/views/users/edit.html.erb
2.3.1 演習
1.CSSを知っている読者へ: 新しいマイクロポストを作成し、ブラウザのHTMLインスペクター機能を使って「Micropost was successfully created.」の箇所を調べてみてください。ブラウザをリロードすると、その箇所はどうなるでしょうか?
<p id="notice">Micropost was successfully created.</p>
リロードすると消える。<p id="notice"></p>
2.マイクロポストの作成画面で、ContentもUserも空にして作成しようとするどうなるでしょうか?
Content、Userが空でも作成できる。
3.141文字以上の文字列をContentに入力した状態で、マイクロポストを作成しようとするとどうなるでしょうか? (ヒント: WikipediaのRubyの記事にある1段落目がちょうど150文字程度ですが、どうなりますか?)
141文字以上でも作成できる。
4.上記の演習で作成したマイクロポストを削除してみましょう。
削除するだけ
2.3.2 演習
1.先ほど2.3.1.1の演習でやったように、もう一度Contentに141文字以上を入力してみましょう。どのように振る舞いが変わったでしょうか?
エラーが出るようになった
1 error prohibited this micropost from being saved:
Content is too long (maximum is 140 characters)
2.CSSを知っている読者へ: ブラウザのHTMLインスペクター機能を使って、表示されたエラーメッセージを調べてみてください。
<div id="error_explanation">
<h2>1 error prohibited this micropost from being saved:</h2>
<ul>
<li>Content is too long (maximum is 140 characters)</li>
</ul>
</div>
2.3.3 演習
1.ユーザーのshowページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。同ファイル内の他のコードから文法を推測してみてください (コラム 1.1で紹介した技術の出番です)。うまく表示できたかどうか、/users/1 にアクセスして確認してみましょう。
<p>
<strong>Micropost:</strong>
<%= @user.microposts.first.content %>
</p>
2.リスト 2.16は、マイクロポストのContentが存在しているかどうかを検証するバリデーションです。マイクロポストが空でないことを検証できているかどうか、実際に試してみましょう (図 2.16のようになっていると成功です)。
エラーが出るようになった
1 error prohibited this micropost from being saved:
Content can't be blank
3.リスト 2.17のFILL_INとなっている箇所を書き換えて、Userモデルのnameとemailが存在していることを検証してみてください (図 2.17)。
class User < ApplicationRecord
has_many :microposts
validates :name, presence: true
validates :email, presence: true
end
2.3.4 演習
1.Applicationコントローラのファイルを開き、ApplicationControllerがActionController::Baseを継承している部分のコードを探してみてください。
class ApplicationController < ActionController::Base
2.ApplicationRecordがActiveRecord::Baseを継承しているコードはどこにあるでしょうか? 先ほどの演習を参考に、探してみてください。ヒント: コントローラと本質的には同じ仕組みなので、app/modelsディレクトリ内にあるファイルを調べてみると...?)
class ApplicationRecord < ActiveRecord::Base
2.3.5 演習
省略
メモ
validatesとかの設定はapp/models
で行う。
本番環境のデータベースのマイグレーションが必要。
$ heroku run rails db:migrate