MVCの挙動 | rails チュートリアル 2

2.2.2 MVCの挙動を勉強してみる。

MVCの挙動

「/users にあるindexページをブラウザで開く」という操作をしたとき、内部では何が起こっているか。

  1. ブラウザが、サーバーに「/user」というリクエストを送る
  2. rails routerが、 Userコントローラー の indexアクションを実行される
  3. UserモデルのUser.allを実行され、すべてのユーザーがDBから取り出され、コントローラーに返される
  4. Usersコントローラは、ユーザーの一覧を@users変数に保存し、indexビューに渡す。
    (@はRubyのインスタンス変数を表す)
  5. indexビューが起動し、erbがhtmlを生成する
  6. コントローラーが生成されたhtmlをブラウザに返す

routes.rbの内容を、

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

このように変更すると、「/user」でも「/」でも、先程のページが見れる。

またUsersコントローラーは、大まかに以下のようになっている。

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

  def show
  end

  def new
  end

  def edit
  end

  def create
  end

  def update
  end

  def destroy
  end

  private
end

コントローラーで作成された@usersというインスタンスが、erbの@users.each で使えるようになっている。

<% @users.each do |user| %>
  <tr>
    <td><%= user.name %></td>
    <td><%= user.email %></td>
    <td><%= link_to 'Show', user %></td>
    <td><%= link_to 'Edit', edit_user_path(user) %></td>
    <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

Usersリソースの欠点

これらのroutes.rbの記述や、コントローラー、html.erbは、

$ rails generate scaffold User name:string email:string

で作成されました。

この「scaffold」で作成されたUsersリソースは、いくつかの問題点を抱えている。

  • データの検証(バリデート)が行われていない。
    このままでは、ユーザー名が空欄であったり、でたらめなメールアドレスを入力したりしても通ってしまう。
  • ユーザー認証が行われていない。
    ログイン、ログアウトが行われていないので、誰でも無制限に操作できてしまう。
  • テストが書かれていない。
    scaffoldのテストコードはデータ検証やユーザー認証、その他の必要な要求を満たしていません。
  • レイアウトやスタイルが整っていない。
    サイトデザインも操作法も一貫していません。

次は、2.3 Micropostsリソースから

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

同じカテゴリの前後の記事


  1. KATOON.NET
  2. TRASH
  3. MVCの挙動 | rails チュートリアル 2