LoginSignup
0
0

More than 3 years have passed since last update.

Ruby on Rails チュートリアル(第4版) 第2章

Last updated at Posted at 2020-06-26

$ 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にアクセスしたときの振る舞いについて図を書いてみてください。
rails.png

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 にアクセスして確認してみましょう。

app/views/users/show.html.erb
<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)。

app/models/user.rb
class User < ApplicationRecord
  has_many :microposts
  validates :name, presence: true
  validates :email, presence: true
end

2.3.4 演習

1.Applicationコントローラのファイルを開き、ApplicationControllerがActionController::Baseを継承している部分のコードを探してみてください。

app/controllers/application_controller.rb
class ApplicationController < ActionController::Base

2.ApplicationRecordがActiveRecord::Baseを継承しているコードはどこにあるでしょうか? 先ほどの演習を参考に、探してみてください。ヒント: コントローラと本質的には同じ仕組みなので、app/modelsディレクトリ内にあるファイルを調べてみると...?)

app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base

2.3.5 演習

省略

メモ

validatesとかの設定はapp/modelsで行う。
本番環境のデータベースのマイグレーションが必要。

$ heroku run rails db:migrate

0
0
0

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
0