1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Railsチュートリアル2章まとめ

Posted at

前提

Railsチュートリアル2章の学習を行ったので
簡単に学んだことをまとめます!

目次

章の目的
UsersモデルとMicropostモデル
Usersリソースの追加
クラスの継承
感想

章の目的

toy_appアプリケーションを作成する。
ユーザーと短いマイクロポスト(Twitterにおけるツイート)を扱う練習となる

UsersモデルとMicropostモデル

○Usersモデル
Usersはデータベースのテーブル(table)に相当し、
id、name、 email の属性はそれぞれテーブルのカラム(column: 列)に相当します。

Users

名前
Id integer
name string
email string

○Micropostモデル
user_idという属性を使って、1人のユーザーに複数のマイクロポストが関連付けられています。

名前
id integer
content string
user_id integer

MicropostとUsersはidとuser_idで関連付けられており、
そのためユーザーは複数のMicropostを持っています

Usersリソースの追加

rails generate scaffold User name:string email:string

Userリソースを追加することでユーザー管理用のページが多数Railsに追加されます。
このコマンドだけでページまで作られるのはすごい便利だと感じました!

Userページの動き

①ブラウザから「/users」というURLのリクエストをRailsサーバーに送信する。

②「/users」リクエストは、Railsのルーティング機構(ルーター)によってUsersコントローラ内のindexアクションに割り当てられる。

○該当箇所
config/routes.rbファイルのルートで
Usersコントローラ内のindexアクションに割り当てている。

Rails.application.routes.draw do
  resources :users
  root 'users#index'
end


③indexアクションが実行され、そこからUserモデルに、「すべてのユーザーを取り出せ」(User.all)と問い合わせる。
④Userモデルは問い合わせを受け、すべてのユーザーをデータベースから取り出す。
⑤データベースから取り出したユーザーの一覧をUserモデルからコントローラに返す。
⑥Usersコントローラは、ユーザーの一覧を@users変数(@はRubyのインスタンス変数を表す)に保存し、indexビューに渡す。

○該当箇所

app/controllers/users_controller.rbファイルのindexアクションの
User.allで問い合わせている(③)
User.allの結果(④)を@usersに保存する(⑤、⑥)

class UsersController < ApplicationController
  .
  .
  def index
    @users = User.all
  end
  .
  .
end


⑦indexビューが起動し、ERB(Embedded RuBy: ビューのHTMLに埋め込まれているRubyコード)を実行して HTMLを生成(レンダリング)する。
app/views/users/index.html.erbファイルの
<% @users.each do |user| %>でユーザーの数分表示する

<p style="color: green"><%= notice %></p>

<h1>Users</h1>

<div id="users">
  <% @users.each do |user| %>
    <%= render user %>
    <p>
      <%= link_to "Show this user", user %>
    </p>
  <% end %>
</div>

<%= link_to "New user", new_user_path %>


⑧コントローラは、ビューで生成されたHTMLを受け取り、ブラウザに返す。

クラスの継承

UserモデルとMicropostモデルはいずれも、ApplicationRecordというクラスを継承しています。
ApplicationRecordクラスは、
Active Recordが提供する基本クラス ActiveRecord::Base を継承しているので、
ApplicationRecordを継承して作成したモデルオブジェクトはデータベースにアクセスできるようになり、データベースのカラムをあたかもRubyの属性のように扱えるようになります。

感想

第二章の学習ではデータ取得から画面表示までの流れを学ぶことができました。
usersとmicropostそれぞれの結びつきを理解するのに最初は苦労しましたが
まとめているうちに動きが理解できました。
この調子で3章も進めていきたいです

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?