0
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 5 years have passed since last update.

Railsチュートリアル第2章 ざっくり何やったか備忘録

0
Last updated at Posted at 2021-03-12

経緯

Railsチュートリアルを1日1章分以上終わらすことを目標にしている
今回は第2章でざっくり何やったかを自分用に残しておく

scaffoldジェネレータを使ってアプリケーションをすばやく生成

Scaffold機能でコードを自動生成すると、Webのあらゆる部分からモデルデータにアクセスしてやりとりできるようになる

RailsではWebアプリケーションの構成にMVC(Model-View-Controller)というモデルを採用している

MVCの挙動

1.ブラウザ         -> Railsサーバー
2.Rails rooter   -> Controller
3.Controller     -> Model
4.Model      <-  -> DB
5.Model          -> Controller
6.Controller     -> View
7.View           -> Controller
8.Controller     -> ブラウザ

Railsが解釈するRESTには、標準的なURLセットと、
データモデルとやりとりするためのコントローラアクションが含まれている

RESTアーキテクチャ

users

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 update id=1のユーザーを更新するアクション
DELETE /users/1 destroy id=1のユーザーを削除するアクション

microposts

HTTPリクエスト URL アクション 用途
GET /microposts index すべてのマイクロポストを表示するページ
GET /microposts/1 show id=1のマイクロポストを表示するページ
GET /microposts/new new マイクロポストを新規作成するページ
POST /microposts create マイクロポストを新規作成するアクション
GET /microposts/1/edit edit id=1のマイクロポストを編集するページ
PATCH /microposts/1 update id=1のマイクロポストを更新するアクション
DELETE /microposts/1 destroy id1のマイクロポストを削除する

2つの構造を比較すると、
Users
Microposts
置き換わっていること以外は一致している。

Userリソースの問題点

  • データの検証が行われていない。ユーザー名が空欄であったり、でたらめなメールアドレスを入力したりしても通ってしまう。
  • ユーザー認証が行われていない。 ログイン、ログアウトが行われていない為、誰でも無制限に操作できてしまう。
  • scaffoldのテストコードはデータ検証やユーザー認証、その他の必要な要求を満たしていない。
  • レイアウトやスタイルが整っていない。 サイトデザインも操作法も一貫していません。
  • scaffoldのコードの理解が困難

Railsではデータのバリデーション(validation)がサポートされており、データモデルの属性の値に制限をかけることができる

app/models/micropost.rb
# MicropostクラスがApplicationRecordクラスを継承しているが、
# 大元になる基本クラスはActionController::Base
class Micropost < ApplicationRecord
  #1つのマイクロポストは1人のユーザーにのみ属する。
  belongs_to :user

  # 140文字制限を加えたい場合、lengthを使う。
  validates :content, length: { maximum: 140 }

  # マイクロポストのコンテンツが存在するか確認(herokuデプロイ時にエラー回避の為削除)
  presence: true

end

1人のユーザーに複数のマイクロポストがある。

app/models/user.rb
class User < ApplicationRecord
  has_many :microposts
end

Railsコンソールを使うと、コマンドラインからRailsアプリケーションとやりとりすることができる

# コンソール起動
$ rails console

first_userにUserデータベースの一番最初に登録されているデータを代入
>> first_user = User.first

first_userに全てのMicropostを結びつける
>> first_user.microposts

micropost変数にfirst_userの最初のmicropostを代入。
>> micropost = first_user.microposts.first

micropostが属するユーザーを取り出す
>> micropost.user

>> exit
0
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
0
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?