RailsTutorial

【Ruby on Rails 独学】Railsチュートリアル 第2章 Toyアプリケーション|scaffold使ってアプリを作る

【RubyonRails独学記】Railsチュートリアル第2章

【目的別おすすめプログラミングスクール】
  • WebCampPRO
    |転職成功率98%!エンジニアとして転職したい人におすすめ
  • ポテパンキャンプ
    |Railsエンジニアとして自社開発企業に転職したい人におすすめ
  • テックアカデミー
    |オンラインでプログラミングを学びたい方におすすめ
  • Aidemy
    |AI(人工知能)分野特化のスクール。AIを学びたいならここ

第2章は大量の機能を自動的に生成する[scaffoldジェネレータ]というスクリプトを使ってアプリケーションを素早く生成し、それをもとにRailsプログラミングとWebプログラミングの概要を学ぶ章です。

今回のToyアプリケーションでは、ユーザーと短いマイクロポスト (Twitterにおけるツイート) のみをサポートするマイクロブログを作成。

scaffold = 大量の機能を自動的に生成 = 簡単にアプリケーション作成が可能に

2.1 アプリケーションの計画

まずはアプリのディレクトリ生成。

$ cd ~/environment
$ rails _5.1.4_ new toy_app
$ cd toy_app/

Gemfileを第1章でも使ったものに書き換え

書き換えたらこれまた1章と同じように[bundle install –without production]を実行。

$ bundle install –without production

上手くいかない場合には[bundle update]してから再実行。

Gitの作成などなど。

$ git init
$ git add -A
$ git commit -m “Initialize repository”

Bitbucketに新しいリポジトリ作成。
「Include a READEME?」はしっかりと「No」に設定しましょう。

$ git remote add origin git@bitbucket.org:/toy_app.git
$ git push -u origin –all

Applicationコントローラとルートルーティングを変更し、変更をHerokuにプッシュ。

$ git commit -am “Add hello”
$ heroku create
$ git push heroku master

[heroku create]実行したあとに表示されるURLをクリックしてブラウザを開いておく。

2.1.1 ユーザーのモデル設計

ユーザーをデータモデルで表す方法としてID番号を割り当て、このIDに[name]、[email]を持たせる。

・String = 文字列型
・Interger = 数値データ型

2.1.2 マイクロポストのモデル設計

基本的にはユーザーよりももっとシンプルで、[id]とマイクロポストのテキスト内容を格納するtext型のcontentだけで構成。
これに投稿者を記録するための[user_id]を追加。

2.2 Usersリソース

今回は[scaffold]を使ってUsersリソースを生成。

$ rails generate scaffold User name:string email:string

新しいデータモデルでデータベースを更新するためのマイグレーションという操作を実行。

$ rails db:migrate

別ターミナルでサーバー起動。

$ cd toy_app
$ rails server

2.2.1 ユーザーページを探検する

ブラウザを開き、URLに/usersを表示したら下記のような画面に遷移すれば○

あとはチュートリアルに従ってユーザー登録してみたりなんやかんや。

2.2.2 MVCの挙動

ブラウザで表示するまでの処理の流れとかをざっと学習。

2.2.3 Usersリソースの欠点

ユーザー名やEmail欄が空欄でも登録できてしまったりといったscaffoldで作成したUserリソースの問題点について把握。

2.3 Micropostsリソース

Usersリソースと比較しながら、Micopostsリソースについて理解していく。

2.3.1 マイクロポストを探検する

Usersリソースの場合と同様にscaffoldでコードを生成。

$ rails generate scaffold Micropost content:text user_id:integer

マイグレーションを実行でデータベースを更新。

$ rails db:migrate

2.3.2 マイクロポストをマイクロにする

[validates]を使うといろいろと制限をかけることが可能、簡単に。

[app/models/micropost.rb]でマイクロポストモデルを開き、下記コードを追加。

validates :content, length:{maximum: 140}

以下のようになれば成功。

2.3.3 ユーザーはたくさんマイクロポストを持っている

UserモデルとMicropostモデルを関連付けを表現するため、以下のようにコード追加。

[app/models/user.rb]
has_many :microposts
[app/models/micropost.rb]
belongs_to :user

rails consoleを使ってデータベースを操作します。

演習でマイクロポストのContentが存在しているかを検証する[validates]を追加し、
ユーザー登録時に名前とアドレスが空の場合にもエラーとなるように以下の[validates]を追加

validates :name, presence: true
validates :email, presence: true

2.3.4 継承の階層

Toyアプリケーションで使っているRailsのコントローラとモデルのクラス階層について。

UserモデルとMicropostモデルは[class User < ApplicationRecord]のようになっており、これがApplicationRecordクラスを継承していることを表す。

ApplicationRecordクラスはActive Recordが提供する基本クラスActiveRecord::Baseを継承。
これにより作成したモデルオブジェクトがデータベースにアクセス可能になり、データベースのカラムをRuby属性のように扱える。

コントローラの継承構造もモデルの継承構造と本質的には同じ。

2.3.5 アプリケーションをデプロイする

リポジトリをBitbucketに登録する。

$ git status
$ git add -A
$ git commit -m “Finish toy app”
$ git push

1.[git status]で変更されたファイルを表示
2.[git add -A]で全ての変更を含むワークツリーの内容をインデックスに追加
3.[git commmit -m”○○”]でインデックスに追加されたファイルをコミットする&コミットメッセージを同時に指定
4.[git push]でリポジトリに変更を書き込み。

gitコマンドの詳細については以下を参照。
参照:基本的なGitコマンドまとめ

Gitのコミットは本来こまめに行うようにするのが望ましい。

HerokuにToyアプリケーションを展開。

$ git push heroku

rails server上で展開していたものがHeroku上でも同じように展開できれば成功です。

第2章はこれで終了。

第1章:【Ruby on Rails 独学】Railsチュートリアル 第1章ゼロからデプロイまで。bitbucketのリポジトリ作成時に要注意
第3章:【Ruby on Rails 独学】Railsチュートリアル 第3章ほぼ静的なページの作成

COMMENT

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

error: Content is protected !!