1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Railsチュートリアル 第2章まとめ

Last updated at Posted at 2024-03-16

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
  • デフォルトページというのは、「/」にアクセスしたとき

RailsにおけるRESTアーキテクチャを構成する全てのアクション一覧
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を継承することで色々できるようになっている)
  1. @users = User.allユーザ一覧を取得
  2. @users 変数にユーザー一覧が保存されると、コントローラはビューを呼び出す
  3. 一覧表示なので、index.html.erbビュー。@usersの一覧を並べ、1行ごとにHTMLの行として出力する(<% @users.each do |user| %>
  4. ビューはその内容をHTMLに変換
  5. コントローラがブラウザに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

image.png

image.png

image.png
image.png

image.png

デプロイ設定ファイル作成
# 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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?