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

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

Last updated at Posted at 2021-04-20

第2章について

第2章ではscaffoldを使ってユーザーモデルとマイクロポストモデルを作成し、投稿機能、投稿者と投稿の関連付けができるアプリケーションを作成する。

目次

1. scaffoldについて
2. scaffoldの欠点
3. RESTアーキテクチャ
4. 継承
5. 命名規則
6. 関連付け
7. エラー
8. 参考文献

#1 scaffoldについて
Railsには大量の機能を自動生成するscaffoldというコマンドがある。
rails generate scaffold モデル名 カラム:型というようにコマンドを実行すると、簡単にRESTfulな(HTTPリクエストによって作成、取得、更新、削除の操作を振り分けて行うことができる)アプリケーションを作成することができる。

  • モデル
  • コントローラ
  • ビュー

scaffoldは上記のようなRailsアプリケーションに必要なMVCを構築するためのファイルを自動作成してくれるので、後はrails db:migrateコマンドでデータベースをマイグレートすることで動くアプリケーションを作成することができる。

#2 scaffoldの欠点
scaffoldは便利ではあるが、以下のような欠点がある。

  • データの検証が行われていない(Validationが書かれていない)
  • ユーザー認証が行われていない
  • テストが書かれていない
  • レイアウトやスタイルが整っていない
  • コードが難解

特にコードが難解で理解が難しいので、Railsのコマンドを学習するためにも初学者はscaffoldを使うべきではないのかもしれない。

#3 RESTアーキテクチャ
Wikipediaより以下引用。

Representational State Transfer (REST) は、ウェブAPIの定義に使用されるアーキテクチャスタイルであり、同時にウェブのような分散ハイパーメディアシステムのためのソフトウェアアーキテクチャのスタイルのひとつでもある。

簡単に言ってしまえば、RESTfulなスタイルというのはHTTPリクエストメソッド(POST/GET/PATCH/DELETE)によってデータベースの作成/取得/更新/削除操作を行えるということ。
以下の記事がRESTについて分かりやすくまとめていたので参照。
REST入門基礎知識

#4 継承
モデルやコントローラでRubyのコードが書けるのはRailsにおいてMVCのModelの部分を提供するActiveRecordが提供するActiveRecord::baseという基本クラスをApplicationRecordが継承しているから。

app/models/user.rb
class User < ApplicationRecord
...
end

#5 命令規則(単数形?複数形?)
基本的にrails generateコマンドを実行するとき、モデルを作成するなら先頭大文字で単数形、コントローラを作成するなら複数形にする。
以下参考。
Railsの命名規則【単数形・複数形】

ちなみにユーザーモデルとマイクロポストモデルの関連付けを行う際にhas_manyとbelongs_toをモデルに記載するがその時、has_manyであれば対象のモデルを複数形、belongs_toであれば単数形で記載する。

#6 関連付け
投稿者(User)1人に対してが投稿内容(Micropost)が複数になっている場合において関連付けをすることでUser側からMicropostを操作することができる。関連付けを行うためにはUserの方にはモデルにhas_many :microposts(*複数形であることに注意)、Micropostの方はモデルにbelongs_to :userというように記載する。
こうすることで例えば、
@user = User.first
@user.micropost.create
というようなコードでidが1のUserのMicropost(投稿)を新規作成することができる。

#7 エラー
herokuでマイグレートを実行しようとした際、エラーが発生した。原因はアプリケーションのpostgresqlへのアドオンが設定されていなかったから。
下記コマンド実行で接続完了。(おそらくコマンドじゃなくてもherokuのwebページでも設定できる)
heroku addons:create heroku-postgresql

#8 参考文献
【Ruby on Rails】Herokuへデプロイして、heroku run db:migreteにて...
Representational State Transfer
REST入門基礎知識
Railsガイド 2.1命名ルール
Railsの命名規則【単数形・複数形】

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?