強欲で謙虚なツボツボ

趣味の読書の書の方

Railsチュートリアル第2章

概要

Railsチュートリアル第2章を終えてのまとめ
次にrailsアプリを作成する時に付けそうなメモ

scaffoldの使い方とMVCについて
本家サイトはこちら

 

環境

AWS cloud9 を使用しました。

  • ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
  • Bundler version 1.17.2
  • Rails 6.0.2.2

 

Scaffoldでモデル、コントローラ、ビューを作成

コマンド一つだけで全てを作ってくれる。

$ rails generate scaffold {モデル名} {カラム名}:{型}

例えば、string型のnameカラムとemailカラムを持つuserテーブルとそれに対応するモデル、コントローラ、ビューを作成する場合は下記を実行。

$ rails generate scaffold User name:string email:string

実行後にファイルがたくさん新規作成されていることが確認できる。
マイグレーションファイルも生成されているので、テーブルを作成する。これによって先ほどのコマンドでモデル名に指定した名前の複数形でテーブルが作成される。例の場合はusersテーブルが指定したカラムを持って作成される。

$ rails db:migrate

この状態で完成しているのでアプリを起動するとブラウザで確認できる。

$ rails server

 

MVCについて

Model

データベースとのやりとりを行う。具体的には、コントローラから指示のあった追加、取得、更新、削除を行う。

バリデーションや他テーブルとの連携についての定義ができる。
バリデーションはvalidates :{カラム名}, {条件}のように記述する。
validates :name, length: {maximum: 10}

他テーブルとの連携は以下のように記述する。
テーブルの1つのデータが他テーブルの複数のデータと連携する
has_many :{テーブル名}

テーブルのデータが他テーブルの一つのデータと連携する
belongs_to :{テーブル名}

has_manyに対応するテーブルがbelongs_toとなる。(userテーブルの一人のユーザーがmicropostsテーブルの複数の投稿を持つ場合は、usersがhas_many :microposts, micropostsがbelongs_to :usersとなる)

 

Controller

ブラウザからのリクエストがルータによってコントローラのアクションが振り分けられる。
コントローラはデータベースの操作をモデルに依頼し、返却値やそれを整形したデータをビューに送る
ビューがデータを含めたhtmlをレンダリングしてコントローラに戻す。
コントローラがhtmlをブラウザに返却することで、ブラウザに表示される。
rubyの変数は@{変数名}。

@user = User.find(1)

 

View

コントローラから値を受け取り、htmlをレンダリングして返却する。

<p>ユーザー名: <%= user.name %></p>