🌷

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