Rails MVCモデルとは何か


結論

アプリケーション設定を整理するための概念。

この概念に基づいてアプリ制作を行うことで、開発がしやすくなったり保守性が高くなったりします。

Q:開発がしやすい?

A:プログラムを書き込む場所がルール化されているので作業が早くなる。

例えば夕飯を用意してください。と指示されるよりもカレーを作ってください、ただし人参は抜きなさいとルールが決められている方が動きやすいのです。

Q:保守性が高い?

A:メンテナンスのしやすさのこと

つまり、こういう考え方で作ると安全で壊れにくいアプリケーション作りやすいよってことです。

ちなみに

Model View Controller の頭文字です。
それぞれ役割が分かれていて、どこに何のプログラムを書くか決まっています。

M: 模型、型

V: 光景、眺め

C: 支配者、制御装置

Modelの役割

データベース操作に関わる処理を作る

商品情報や、顧客情報のデータを扱うデータベース(db)のデータ操作をするためのプログラムを作る。

例:個人情報に関するデータや自己紹介メソッドを定義する

app/model/user.rb
class User
  def initialize    #インスタンスが生成される段階で実行される処理
    @name = "Kuramoto30"
    @birthday = "1994/1/3"
    @age = 28
    @hobby = "Food"
  end

  def introduce
    <<~EOS

    私の名前は#{@name}です。
    誕生日は#{@birthday}で、年齢は#{@age}歳。
    趣味は#{@hobby}です。

    EOS
  end
end

このデータはコントローラーへ渡されます。

Controller

ModelとViewの橋渡しとなる処理を作る

app/controllers/homes_controllers.rb
     #HomesControllerはApplicationControllerを継承する
class HomesController < ApplicationController 
  #一覧アクション
  def index
    user = User.new     #userモデルをインスタンス化しuserへ格納
    @my_introduce = user.introduce #userのintroduceメソッドを呼び出し@my_introduceへ格納
  end
end

Modelから受け取ったデータを扱えるようにインスタンス変数に格納しています。
インスタンス変数をViewで扱うことでModelのデータを受け渡すことができます。

Viewの役割

コントローラーからモデルのデータ(インスタンス変数を参照する形)を受け取り、表示する処理を作る

app/views/homes/index.html.erb
<%= @my_introduce %>

以上です。全体像を大まかに捉えながら、一緒に頑張りましょう。