2.2Usersリソース
データモデルを作る
rails generate scaffold User name:string email:string
データベースをマイグレートする
rails db:migrate
2.2.2MVCの挙動
- ルーティング設定ファイルは、config/routes.rb
config/routes.rb
Rails.application.routes.draw do
resources :users
root 'users#index' <- デフォルトページの代わりに、ユーザー一覧を表示するようにしている
end
-
デフォルトページというのは、「/」にアクセスしたとき
HTTP リクエスト メソッド | URL | アクション | 用途 |
---|---|---|---|
GET | /users | index | すべてのユーザーを一覧するページ |
GET | /users/1 | show | id=1のユーザーを表示するページ |
GET | /users/new | new | 新規ユーザーを作成するページ |
POST | /users | create | ユーザーを作成するページ |
GET | /users/1/edit | edit | id=1のユーザーを編集するページ |
PATCH | /users/1 | show | id=1のユーザーを更新するページ |
DELETE | /users/1 | destroy | id=1のユーザーを削除するページ |
REST:REpresentational State Transfer
インターネットそのものやWebアプリケーションなどの、分散・ネットワーク化されたシステムやアプリケーションを構築するためのアーキテクチャのスタイルの一つ。
railsアプリケーションにおけるRESTとは、アプリケーションを構成するコンポーネント(ユーザーやマイクロポストなど)を「リソース」としてモデル化することを指す。
これらのリソースは、CRUDと4つの基本的なHTTPrequestメソッド(POST/GET/PATCH/DELETE)の両方に対応している。
(Create:POST、Read:GET、Update:PATCH、Delete:DELETE)
- Active RecordというRubyライブラリのおかげで、User.allというリクエストに対して、DB上のすべてのユーザーを返すことができる(ApplicationRecordを継承することで色々できるようになっている)
-
@users = User.all
ユーザ一覧を取得 -
@users
変数にユーザー一覧が保存されると、コントローラはビューを呼び出す - 一覧表示なので、index.html.erbビュー。
@users
の一覧を並べ、1行ごとにHTMLの行として出力する(<% @users.each do |user| %>
) - ビューはその内容をHTMLに変換
- コントローラがブラウザにHTMLを送信>ブラウザでHTMLが表示される
- @記号で始まる変数 = インスタンス変数
- コントローラで宣言したインスタンス変数はビューでも使える
2.2.3Usersリソースの欠点
scaffoldで作成したUsersリソースは、問題点もあり。。
- データの検証が行われていない
- 必須やバリデーションチェックがない
- ユーザー認証が行われていない
- ログイン、ログアウトが行われていないので、誰でも無制限に操作できてしまう
- テストが書かれていない
- 簡単なテストは一応含まれている
- でもデータ検証やユーザー認証、その他の必要な要求を満たしていない
- レイアウトやスタイルが整っていない
- サイトデザインも操作法も一貫していない
- 理解が困難
- ちょー複雑(理解できたら「熟練」)
2.3Micropostsリソース
2.3.2マイクロポストをマイクロにする
- バリデーション制御
app/models/micropost.rb
class Micropost < ApplicationRecord
validates :content, length: { maximum: 140 }
end
2.3.3ユーザーはたくさんマイクロポストを持っている
- テーブルの紐付け
対1
class Micropost < ApplicationRecord
belongs_to :users
validates :content, length: { maximum: 140 }
end
対複数
class User < ApplicationRecord
has_many :microposts
end
RailsConsole
rails console
first_user = User.first
first_user.microposts
micropost = first_user.microposts.first
micropost
micropost.user
exit
2.5Toyアプリケーションをデプロイする
設定ファイル作成
touch bin/render-build.sh
bin/render-build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit
bundle install
bundle exec rails assets:precompile
bundle exec rails assets:clean
bundle exec rails db:migrate
pushする
デプロイ
https://railstutorial.jp/chapters/beginning?version=7.0#sec-deploying
デプロイ設定ファイル作成
# config/master.key があるかどうかを確認する
$ ls config/master.key
ls: config/master.key: No such file or directory
# 既存の credentials.yml.enc を削除する
$ rm config/credentials.yml.enc
# 新しい credentials.yml.enc と master.key を作成する
$ rails credentials:edit
# ココで credentials.yml.enc ファイルが開きますが、変更せずに閉じてください。
# pushする
RAILS_MASTER_KEYの値
code config/master.key
Build Command の値
./bin/render-build.sh