Railsでアプリケーションを作る2(MVCの構築)
おつかれさまです。
Railsのアプリ作成、その骨格ができたところで、データベースへデータをやりとりできる構造を作ります。
Railsにおけるデータベースとのやり取りを行うその構造は、MVCと呼ばれています。MVCはそれぞれ、M(モデル)、V(ビュー)、C(コントローラ)という機能を指し、ユーザが入力するデータはこれらの機能に応じて流れて、処理されてデータベースと行き来します。
まず、ユーザはブラウザに表示されるV(ビュー)に必要なデータを入力し、そのデータはC(コントローラ)によって制御されます。データをデータベースへ保存する際はM(モデル)を介して保存されます。逆にデータベースに保存されたデータを参照、表示したいときも同様に、M(モデル)を介して、C(コントローラ)で制御され、V(ビュー)に表示されます。
このV(ビュー)において、ユーザからどんな指令が入るとどのC(コントローラ)が起動するのか、をまとめた役割を持つのがルーティングになります。
えらそうに書きましたが、私も分かってません、マジ謎。まあ、何がどういう仕組みで、ってのはもう置いといて、何をしたら望み通り動くねん、ってところにフォーカスして作っていきます。
とりあえず、MVCに加え、ルーティングという4つのファイルの編集が必要になります。まずC(コントローラ)とM(モデル)は自分で名前を指定して作成しなければいけません。
ターミナルでコントローラの作成を指令します、
$ rails g controller texts
これでtextsというコントローラを作成します。命名規則として、コントローラは小文字複数形が原則です、なぜかは知りません、えろい人に聞いてください。
次はM(モデル)を作成します、同様にターミナルでモデルの作成を指令します、
$ rails g model text
これでtextというモデルを作成します。こちらの命名規則は、小文字単数形が原則です、なぜかはs(ry
あと、命名規則は対応しなければいけませんが、そもそもモデルとコントローラの名前はそろえておかなければいけません、なんかとりあえず動いたりしますが、よくわからないところでエラーが出ます、なぜかはs(ry
ちなみにgはgenerationの頭文字です、エグザイルとは関係ありません。
これでデータベースへアクセスするM(モデル)が作成できましたが、作業はまだ完了していません。モデルの作成に伴い、データベースにカラム(データ名)を追加する必要があります。いちど「rails new」コマンドで作成したtext_logファイルをエディターのSublime Textで展開してみます、
コントローラとモデルが作成されています。
データベースにカラムを追加するにはmigrationファイルを通じて操作する必要があります。dbファイルの下にあるmigrateファイルを開けると、モデルを作成した時間の名前で編集ファイル作成されています、
class CreateTexts < ActiveRecord::Migration[5.2] def change create_table :texts do |t| t.timestamps end end end
このファイルに「title:タイトル(string型)」、「content:内容(text型)」を追加します、このtitleとcontentがデータベースに保存するデータのカラムになります、「型」は保存するデータの種類を指定しています。
class CreateTexts < ActiveRecord::Migration[5.2] def change create_table :texts do |t| t.string :title t.text :content t.timestamps end end end
編集完了です、データベースにカラムの変更を反映するにはターミナルで指令します、
$ rake db:migrate
これでデータベースにデータを保存する箱まで用意できました、つかれたのでここまでを一度まとめます。
1.アプリでデータベースとデータをやり取りするにはMVC+ルーティングファイルが必要
2.C(コントローラ)とM(モデル)は自分で名前を決めて作成する
3.migrationファイルでデータベースのカラムを設定する
なかなか難しい、ひとまずMVC+ルーティングのうちMCの準備は完了、V(ビュー)はC(コントローラ)の編集に合わせて作成します、次は具体的にそれぞれのファイルへコードを書いていきます。