社畜エンジニア発掘戦線

駆けだしAIエンジニア

Railsでアプリケーションを作る2(MVCの構築)

おつかれさまです。

Railsのアプリ作成、その骨格ができたところで、データベースへデータをやりとりできる構造を作ります。

Railsにおけるデータベースとのやり取りを行うその構造は、MVCと呼ばれています。MVCはそれぞれ、M(モデル)、V(ビュー)、C(コントローラ)という機能を指し、ユーザが入力するデータはこれらの機能に応じて流れて、処理されてデータベースと行き来します。

f:id:sutokun:20180616192138p:plain

まず、ユーザはブラウザに表示される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で展開してみます、
f:id:sutokun:20180616234413p:plain
コントローラとモデルが作成されています。


データベースにカラムを追加するにはmigrationファイルを通じて操作する必要があります。dbファイルの下にあるmigrateファイルを開けると、モデルを作成した時間の名前で編集ファイル作成されています、
f:id:sutokun:20180617000923p:plain

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(コントローラ)の編集に合わせて作成します、次は具体的にそれぞれのファイルへコードを書いていきます。