koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

scaffoldを使ってみました ~Ruby on Rails学び始めました~

はじめに

先日から、Ruby on Railsを学び始めました。

豊富な機能に圧倒され、中々理解が進みませんが、分かったことを一つずつアウトプットしていき、なんとか理解できるようになりたいです。

今回は、scaffoldコマンドを使って簡単なメモアプリを作るまでの手順をまとめました。

環境

Mac OS Catalina 10.15

Ruby 2.6.3

Rails 6.0.0

手順

今回の流れは以下の通りです。

  1. Raislアプリケーションを新規に作成する

  2. scaffoldを使ってみる

  3. データベースをマイグレーションする

  4. 本当にできているか、確認してみる

1. Raislアプリケーションを新規に作成する

以下のコマンドを実行することで、Railsアプリケーションに必要な基本的なファイル群が用意されます🤭 今回は、アプリケーションの名前をmemoにします。

rails new memo_app

しばし待って以下のように、成功した旨が表示されると思います。

Webpacker successfully installed

すると、新たなmemoディレクトリが誕生しているはずです。

これで第1段階終了です。

2. scaffoldを使ってみる

scaffoldとは、CRUDの機能を一気に作ってくれるコマンドです。

CRUDとは Create(新規作成) Read(読み出し) Update(更新) Delete(削除) の4つの機能のことをいいます。

これが一つのコマンドでできるわけです・・・恐ろしい🥶

では、先ほど、作成したmemoディレクトリに移動して、実行してみましょう。 scaffoldには以下のように、モデル名(DBの構造を記述する仕組み)、カラム名:データ型...を渡してあげます。

今回は、文字列型の「title」と「body」カラムを持つ「memo」モデルを作成します。

rails generate scaffold memo title:string body:string

ルーティングも自動で設定してくれます・・・恐ろしい🥶

これで第2段階が終了です。

3. データベースをマイグレーションする

データベースをマイグレーションするとはどういうことか。 データベースになんらかの操作を行うときは、SQL文を実行します。

しかし、Railsはマイグレーションスクリプトというデータベースを操作するスクリプトファイルを作成してくれます。これは、データベースになんらかの操作が行われる度に作成されていきます。つまり、最初に作成されたファイルから順番に読み込んでいくことで、現在のテーブルの状態を作成することができるのです。

マイグレーションを行う利点として、データベースの言語がなんであれ、操作が可能になることが挙げられます。

では、以下のコマンドを実行しましょう。これにより、最初から最新までのマイグレーションを適用させます。

❯ rails db:migrate

== 20191023095136 CreateMemos: migrating ======================================
-- create_table(:memos)
   -> 0.0019s
== 20191023095136 CreateMemos: migrated (0.0020s) =============================

これで、第3段階が終了です。

4. 本当にできているか、確認してみる

本当にメモアプリができているのでしょうか確認してみましょう。

それには、サーバを起動してやる必要がありますので、以下のコマンドで起動します。

rails server

=> Booting Puma
=> Rails 6.0.0 application starting in development 
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop

上記の状態で、http://localhost:3000/memos にアクセスしてみましょう。 以下のようになれば成功です。

f:id:NMP300:20191023191119p:plain
メモアプリを作成

しっかりと、作成、内容表示、削除ができています‼️

f:id:NMP300:20191023191137p:plain
しっかりとメモの投稿ができている

最後に

前回取り組んだSinatraでメモアプリを作成する課題では、とても苦戦したCRUD機能の実装ですが、Railsはこんなに簡単にできることに驚きです🤭

驚きを通り越して、恐さを感じました💦

まだまだ、分からないことだらけのRailsですが、このように自分なりにまとめてみると少しずつ分かっていく感じがありますね。

明日からも引き続き取り組んでいきます💪

参考

CRUDの基礎とindexアクション

Ruby on Rails ガイド:体系的に Rails を学ぼう

Scaffoldによって作成されるファイル - Ruby on Rails入門

マイグレーション機能とは - Ruby on Rails入門