🌷
Rails チュートリアル 2章
まえがき
Railsチュートリアル2章を学習する上でわからなかった文法、構造的仕組みをまとめるものである。
Scaffold
簡単にアプリケーションの骨組みを作ってくれる便利スクリプト。2章においてはこれで作成された骨組みをもとにToyアプリケーションを作成している。
__
ユーザーのモデル設計
取り扱う情報とその型をまとめたアプリケーションの構造を表すデータモデルを作成しておくと良い。このデータモデルの属性をscaffoldに与えると、データモデル通りにデータベースが作成される。
bash
rails generate scaffold リソース名 属性名:型・・・
データベースを更新してデータモデルを作成するためのマイグレートをこまめに行う必要があるが、Rails チュートリアル 1章においてすでにbinにrender-build.shを登録しているなら場合、自動で実行されるため気にしなくて良い。
お手軽ルーティング
アプリケーションは機能ごとに様々なルート(URL)を持っており、それらをいちいち設定するのは手間である。そこで、以下のようなコード(緑部分)を用いることで自動的に7つのアクションに対して、ルーティングを作成することができる。また、以下のコード(赤部分)を記述するのは、「/」にアクセスした際に、どのコントローラのどのアクションを表示するのか。すなわち初期状態(ルート)を指定するための記述である。
routes.rb
> resources :controller_name
< root "controller_name#action"
| アクション名 | 役割 |
|---|---|
| index | リソース一覧を表示 |
| show | リソース詳細を表示 |
| new | 新規投稿フォーム表示 |
| create | リソース追加 |
| edit | 更新フォーム表示 |
| update | リソース更新 |
| destroy | リソース削除 |
| →RESTという考え方に基づいて考えられている! |
RESTとは?
RESTとはアプリケーションを以下の4つの基本操作から構成しようという考えのことである。
- 作成(Create)
- 取得(Read)
- 更新(Update)
- 削除(Delete)
これらの機能はHTMLにおける基本操作と似ており以下のような対応関係にある。
| REST | HTML | 意味 |
|---|---|---|
| Create | POST | 作成 |
| Read | GET | 取得 |
| Update | PATCH | 更新 |
| Delete | DELETE | 削除 |
モデルにおける制約の追加
データベースにデータを保存する上で、入力されたデータに関して制約を設けたい場合、以下のようにvalidatesメソッドを用いれば良い。(以下では文字数を制限している。)
microposts.rb
validates :content, length: { maximum: 140 }
テーブルを関連づけるメソッド
-
has_many
1つに対して複数の情報を持つ -
belongs_to
1つに対して1つのみの情報を持つ
例えば、Usersがhas_many,Micropostsがbelongs_toを用いていた場合、2つを組み合わせることでUsers-Microposts間の1対多の関係を表すことができる。
なぜモデルはデータベースにアクセスできる?
→そのような機能を持つクラスの継承によってである。
本チュートリアルで言えば、ActiveRecord::Baseというクラスを継承することで、これが実現されている。
Discussion